Mailinglist Archive: opensuse-commit (1903 mails)

< Previous Next >
commit xpra for openSUSE:Factory
Hello community,

here is the log from the commit of package xpra for openSUSE:Factory checked in
at 2019-04-28 20:14:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xpra (Old)
and /work/SRC/openSUSE:Factory/.xpra.new.5536 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xpra"

Sun Apr 28 20:14:19 2019 rev:5 rq:698572 version:2.5.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/xpra/xpra.changes 2019-04-04
15:26:55.638886974 +0200
+++ /work/SRC/openSUSE:Factory/.xpra.new.5536/xpra.changes 2019-04-28
20:14:20.806385167 +0200
@@ -1,0 +2,45 @@
+Fri Apr 26 22:18:38 UTC 2019 - Luigi Baldoni <aloisio@xxxxxxx>
+
+- Update to version 2.5.1
+ * fix sending of icons as premultipled ARGB
+ * fix compatibility with old versions of python-pillow
+ * fix scroll encoding code flow (should be impossible to hit)
+ * fix handling of info requests with Python3 servers
+ * fix missing option for lock argument in man page
+ * fix ssh errors handling authentication failures
+ * fix ssh server connections and support 'none' authentication
+ * fix start new command menu
+ * fix appindicator failures when we fail to locate the default
+ icon
+ * fix command line tools usage under cygwin and terminal
+ emulators
+ * fix pointer position on multi-monitor shadow servers
+ * fix system tray forwarding with python3 servers
+ * fix window icons forwarding (MS Windows and MacOS mostly)
+ * fix detection of splash window types
+ * fix server startup errors when X11 root properties are
+ invalid
+ * fix shadow server startup failures on MacOS
+ * fix system tray errors during shadow server startup on MacOS
+ * fix printing errors with python3 builds and rencode packet
+ encoder
+ * fix parsing of printer options
+ * fix dispatching of printer jobs to clients with python3
+ servers
+ * fix parsing of key symbol definitions with python3 servers
+ * fix compatibility with older versions of GTK3
+ * fix proxy video encoders initialization
+ * fix 'missing encodings' server error with python3
+ * fix spurious clipboard warning when clipboard is disabled
+ * disable modal windows by default (was enabled by default
+ since v2.3)
+ * workaround buggy system trays
+ * try harder to prevent hash collisions in scroll encoding
+ * skip risky opengl probing when the initial check failed
+ * prevent file conflicts with older packages
+ * don't use appindicator with Fedora Gnome
+ * minor packaging fixes (dates)
+ * remove spurious ssh dnssec check logging
+ * bump version in cups backend
+
+-------------------------------------------------------------------

Old:
----
xpra-2.5.tar.xz

New:
----
xpra-2.5.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xpra.spec ++++++
--- /var/tmp/diff_new_pack.DIDoOt/_old 2019-04-28 20:14:21.430384780 +0200
+++ /var/tmp/diff_new_pack.DIDoOt/_new 2019-04-28 20:14:21.434384778 +0200
@@ -23,7 +23,7 @@
%endif
%global __requires_exclude
^typelib\\(GtkosxApplication\\)|typelib\\(GdkGLExt\\)|typelib\\(GtkGLExt\\).*$
Name: xpra
-Version: 2.5
+Version: 2.5.1
Release: 0
Summary: Remote display server for applications and desktops
License: GPL-2.0-or-later AND BSD-3-Clause AND LGPL-3.0-or-later AND MIT

++++++ xpra-2.5.tar.xz -> xpra-2.5.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/NEWS new/xpra-2.5.1/NEWS
--- old/xpra-2.5/NEWS 2019-03-20 05:43:43.000000000 +0100
+++ new/xpra-2.5.1/NEWS 2019-04-16 06:57:10.000000000 +0200
@@ -1,3 +1,43 @@
+v2.5.1 (2019-04-15)
+======================
+ -- fix sending of icons as premultipled ARGB
+ -- fix compatibility with old versions of python-pillow
+ -- fix scroll encoding code flow (should be impossible to hit)
+ -- fix handling of info requests with Python3 servers
+ -- fix missing option for lock argument in man page
+ -- fix ssh errors handling authentication failures
+ -- fix ssh server connections and support 'none' authentication
+ -- fix start new command menu
+ -- fix appindicator failures when we fail to locate the default icon
+ -- fix command line tools usage under cygwin and terminal emulators
+ -- fix pointer position on multi-monitor shadow servers
+ -- fix system tray forwarding with python3 servers
+ -- fix window icons forwarding (MS Windows and MacOS mostly)
+ -- fix detection of splash window types
+ -- fix server startup errors when X11 root properties are invalid
+ -- fix shadow server startup failures on MacOS
+ -- fix system tray errors during shadow server startup on MacOS
+ -- fix printing errors with python3 builds and rencode packet encoder
+ -- fix parsing of printer options
+ -- fix dispatching of printer jobs to clients with python3 servers
+ -- fix parsing of key symbol definitions with python3 servers
+ -- fix compatibility with older versions of GTK3
+ -- fix proxy video encoders initialization
+ -- fix 'missing encodings' server error with python3
+ -- fix spurious clipboard warning when clipboard is disabled
+ -- disable modal windows by default (was enabled by default since v2.3)
+ -- workaround buggy system trays
+ -- try harder to prevent hash collisions in scroll encoding
+ -- skip risky opengl probing when the initial check failed
+ -- prevent file conflicts with older packages
+ -- don't use appindicator with Fedora Gnome
+ -- minor packaging fixes (dates)
+ -- remove spurious ssh dnssec check logging
+ -- bump version in cups backend
+ -- DEB package still recommends the python2 builds
+ -- don't bundle openssh on MS Windows
+
+
v2.5 (2019-03-19)
======================
-- Python 3 port mostly complete, including packaging for Debian
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/cups/xpraforwarder
new/xpra-2.5.1/cups/xpraforwarder
--- old/xpra-2.5/cups/xpraforwarder 2019-03-20 05:43:43.000000000 +0100
+++ new/xpra-2.5.1/cups/xpraforwarder 2019-04-10 04:48:02.000000000 +0200
@@ -42,7 +42,7 @@
from urllib.parse import urlparse, parse_qs


-__version__ = "2.3"
+__version__ = "2.5"


#Writes a syslog entry (msg) at the default facility:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/html5/js/Utilities.js
new/xpra-2.5.1/html5/js/Utilities.js
--- old/xpra-2.5/html5/js/Utilities.js 2019-03-20 05:43:44.000000000 +0100
+++ new/xpra-2.5.1/html5/js/Utilities.js 2019-04-01 16:58:59.000000000
+0200
@@ -10,7 +10,7 @@
'use strict';

var Utilities = {
- VERSION : "2.5",
+ VERSION : "2.5.1",

exc : function() {
console.error.apply(console, arguments);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/man/xpra.1 new/xpra-2.5.1/man/xpra.1
--- old/xpra-2.5/man/xpra.1 2019-03-20 05:43:45.000000000 +0100
+++ new/xpra-2.5.1/man/xpra.1 2019-03-28 13:13:12.000000000 +0100
@@ -1276,7 +1276,7 @@
to decide if they are willing to share the session.
When used client-side, the default value \fIauto\fP evaluates to \fIno\fP.
.TP
-\fB--lock\fP=\fIyes\fP|\fIno\fP|\fIno\fP
+\fB--lock\fP=\fIyes\fP|\fIno\fP|\fIauto\fP
Locking allows a client to refuse to hand over the session to a new client.
The session may still be shared with multiple clients (see the \fIsharing\fP
option),
but otherwise the server will reject new clients.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/svn-info new/xpra-2.5.1/svn-info
--- old/xpra-2.5/svn-info 2019-03-20 05:44:42.000000000 +0100
+++ new/xpra-2.5.1/svn-info 2019-04-16 06:57:14.000000000 +0200
@@ -1,13 +1,13 @@
Path: .
-Working Copy Root Path: /opt/Downloads/Xpra
-URL: svn+ssh://xpra.org/var/svn/repos/Xpra/tags/v2.5.x/src
+Working Copy Root Path: /home/antoine/workspace-shifter/Xpra
+URL: file:///var/svn/repos/Xpra/tags/v2.5.x/src
Relative URL: ^/tags/v2.5.x/src
-Repository Root: svn+ssh://xpra.org/var/svn/repos/Xpra
+Repository Root: file:///var/svn/repos/Xpra
Repository UUID: 3bb7dfac-3a0b-4e04-842a-767bc560f471
-Revision: 22144
+Revision: 22432
Node Kind: directory
Schedule: normal
Last Changed Author: antoine
-Last Changed Rev: 22134
-Last Changed Date: 2019-03-19 22:04:52 +0700 (Tue, 19 Mar 2019)
+Last Changed Rev: 22432
+Last Changed Date: 2019-04-16 05:13:59 +0100 (Tue, 16 Apr 2019)

diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/svn-version new/xpra-2.5.1/svn-version
--- old/xpra-2.5/svn-version 2019-03-20 05:44:42.000000000 +0100
+++ new/xpra-2.5.1/svn-version 2019-04-16 06:57:14.000000000 +0200
@@ -1 +1 @@
-22144
+22432
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/win32/MINGW_BUILD.sh
new/xpra-2.5.1/win32/MINGW_BUILD.sh
--- old/xpra-2.5/win32/MINGW_BUILD.sh 2019-03-20 05:43:48.000000000 +0100
+++ new/xpra-2.5.1/win32/MINGW_BUILD.sh 2019-04-12 17:27:57.000000000 +0200
@@ -18,7 +18,7 @@
DO_MSI=${DO_MSI:-0}
DO_SIGN=${DO_SIGN:-1}
BUNDLE_PUTTY=${BUNDLE_PUTTY:-1}
-BUNDLE_OPENSSH=${BUNDLE_OPENSSH:-1}
+BUNDLE_OPENSSH=${BUNDLE_OPENSSH:-0}
BUNDLE_OPENSSL=${BUNDLE_OPENSSL:-1}
ZIP_MODULES=${ZIP_MODULES:-1}

diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/win32/xpra.iss new/xpra-2.5.1/win32/xpra.iss
--- old/xpra-2.5/win32/xpra.iss 2019-03-20 05:43:49.000000000 +0100
+++ new/xpra-2.5.1/win32/xpra.iss 2019-04-16 06:57:10.000000000 +0200
@@ -1,22 +1,22 @@
[Setup]
AppName=Xpra
AppId=Xpra_is1
-AppVersion=2.5
-AppVerName=Xpra 2.5
-UninstallDisplayName=Xpra 2.5
+AppVersion=2.5.1
+AppVerName=Xpra 2.5.1
+UninstallDisplayName=Xpra 2.5.1
AppPublisher=xpra.org
-AppPublisherURL=http://xpra.org/
+AppPublisherURL=http:;xpra.org/
DefaultDirName={pf}\Xpra
DefaultGroupName=Xpra
DisableProgramGroupPage=true
OutputDir=dist
OutputBaseFilename=Xpra_Setup
-//Compression=none
-//Compression=lzma2/fast
+;Compression=none
+;Compression=lzma2/fast
Compression=lzma2/max
SolidCompression=yes
AllowUNCPath=false
-VersionInfoVersion=2.5
+VersionInfoVersion=2.5.1
VersionInfoCompany=xpra.org
VersionInfoDescription=multi-platform screen and application forwarding system
WizardImageFile=win32\xpra-logo.bmp
@@ -121,7 +121,7 @@
begin
nMsgBoxResult := MsgBox('Xpra is already running, you must stop it to
proceed.', mbInformation, MB_RETRYCANCEL);
end;
- // if Cancel is pressed
+ //if Cancel is pressed
if nMsgBoxResult = IDCANCEL then
begin
Result := False;
@@ -137,7 +137,7 @@
begin
nMsgBoxResult := MsgBox('Xpra is still running, you must stop it to be
able to uninstall everything.', mbInformation, MB_RETRYCANCEL);
end;
- // if Cancel is pressed
+ //if Cancel is pressed
if nMsgBoxResult = IDCANCEL then
begin
Result := False;
@@ -157,7 +157,7 @@
openssl := ExpandConstant('{app}\OpenSSL.exe');
Exec(openssl, args, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;
- // move old config file:
+ //move old config file:
config := ExpandConstant('{app}\xpra.conf');
saved_config := ExpandConstant('{app}\etc\xpra.conf.bak');
if (FileExists(config)) then
@@ -203,10 +203,10 @@
sUnInstallString: String;
iResultCode: Integer;
begin
-// Return Values:
-// 1 - uninstall string is empty
-// 2 - error executing the UnInstallString
-// 3 - successfully executed the UnInstallString
+ // Return Values:
+ // 1 - uninstall string is empty
+ // 2 - error executing the UnInstallString
+ // 3 - successfully executed the UnInstallString

// default return value
Result := 0;
@@ -232,4 +232,4 @@
UnInstallOldVersion();
end;
end;
-end;
\ No newline at end of file
+end;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/__init__.py
new/xpra-2.5.1/xpra/__init__.py
--- old/xpra-2.5/xpra/__init__.py 2019-03-20 05:44:42.000000000 +0100
+++ new/xpra-2.5.1/xpra/__init__.py 2019-04-16 06:57:17.000000000 +0200
@@ -4,4 +4,4 @@
# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
# later version. See the file COPYING for details.

-__version__ = "2.5"
+__version__ = "2.5.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/client/client_tray.py
new/xpra-2.5.1/xpra/client/client_tray.py
--- old/xpra-2.5/xpra/client/client_tray.py 2019-03-20 05:43:49.000000000
+0100
+++ new/xpra-2.5.1/xpra/client/client_tray.py 2019-04-10 04:48:03.000000000
+0200
@@ -37,6 +37,8 @@
self._backing = None
self.new_backing(w, h)
self.idle_add(self.reconfigure)
+ #things may have settled by now
+ self.timeout_add(1000, self.send_configure)

def set_alpha(self):
#nothing to do,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/client/gtk_base/gtk_client_base.py
new/xpra-2.5.1/xpra/client/gtk_base/gtk_client_base.py
--- old/xpra-2.5/xpra/client/gtk_base/gtk_client_base.py 2019-03-20
05:43:49.000000000 +0100
+++ new/xpra-2.5.1/xpra/client/gtk_base/gtk_client_base.py 2019-03-28
13:13:12.000000000 +0100
@@ -968,8 +968,10 @@
parts = enable_opengl.split(":", 1)
enable_option = parts[0] #ie: "on"
opengllog("init_opengl: enable_option=%s", enable_option)
- if enable_option=="probe-failed":
- msg = "probe failed: %s" % csv(parts[1:])
+ if enable_option in ("probe-failed", "probe-error"):
+ msg = enable_option.replace("-", " ")
+ if len(parts)>1:
+ msg += ": %s" % csv(parts[1:])
self.opengl_props["info"] = "disabled, %s" % msg
self.opengl_setup_failure(body=msg)
return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xpra-2.5/xpra/client/gtk_base/gtk_client_window_base.py
new/xpra-2.5.1/xpra/client/gtk_base/gtk_client_window_base.py
--- old/xpra-2.5/xpra/client/gtk_base/gtk_client_window_base.py 2019-03-20
05:43:49.000000000 +0100
+++ new/xpra-2.5.1/xpra/client/gtk_base/gtk_client_window_base.py
2019-04-10 04:48:03.000000000 +0200
@@ -138,7 +138,7 @@
#"DIALOG",
#"MENU",
#"TOOLBAR",
- #"SPLASHSCREEN",
+ #"SPLASH",
#"UTILITY",
#"DOCK",
#"DESKTOP",
@@ -154,6 +154,7 @@
#"DIALOG",
"MENU",
#"TOOLBAR",
+ "SPLASH",
"SPLASHSCREEN",
"UTILITY",
"DOCK",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/client/gtk_base/start_new_command.py
new/xpra-2.5.1/xpra/client/gtk_base/start_new_command.py
--- old/xpra-2.5/xpra/client/gtk_base/start_new_command.py 2019-03-20
05:43:49.000000000 +0100
+++ new/xpra-2.5.1/xpra/client/gtk_base/start_new_command.py 2019-04-10
04:48:03.000000000 +0200
@@ -122,7 +122,7 @@
def category_changed(self, *args):
category = self.category_combo.get_active_text().encode("utf-8")
log("category_changed(%s) category=%s", args, category)
- entries = self.xdg_menu.get(category)
+ entries = self.xdg_menu.get(category, {}).get("Entries", {})
self.command_combo.get_model().clear()
for name in entries.keys():
self.command_combo.append_text(name.decode("utf-8"))
@@ -174,7 +174,7 @@
if self.xdg_menu:
category = self.category_combo.get_active_text()
log("category=%s", category)
- entries = self.xdg_menu.get(category.encode("utf-8"))
+ entries = self.xdg_menu.get(category.encode("utf-8"),
{}).get("Entries", {})
if entries:
command_name = self.command_combo.get_active_text()
command_props = entries.get(command_name.encode("utf-8"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/codecs/argb/argb.pyx
new/xpra-2.5.1/xpra/codecs/argb/argb.pyx
--- old/xpra-2.5/xpra/codecs/argb/argb.pyx 2019-03-20 05:43:49.000000000
+0100
+++ new/xpra-2.5.1/xpra/codecs/argb/argb.pyx 2019-04-10 04:48:03.000000000
+0200
@@ -293,7 +293,7 @@
cdef unsigned int argb #@DuplicateSignature
assert argb_len>0 and argb_len % 4 == 0, "invalid buffer size: %s is not a
multiple of 4" % argb_len
cdef MemBuf output_buf = getbuf(argb_len)
- cdef unsigned char* argb_out = <unsigned char*> output_buf.get_mem()
+ cdef unsigned int* argb_out = <unsigned int*> output_buf.get_mem()
cdef int i #@DuplicateSignature
for 0 <= i < argb_len / 4:
argb = buf[i]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/codecs/pillow/__init__.py
new/xpra-2.5.1/xpra/codecs/pillow/__init__.py
--- old/xpra-2.5/xpra/codecs/pillow/__init__.py 2019-03-20 05:43:50.000000000
+0100
+++ new/xpra-2.5.1/xpra/codecs/pillow/__init__.py 2019-03-20
14:37:17.000000000 +0100
@@ -26,7 +26,10 @@
import PIL #@UnresolvedImport
from PIL import Image #@UnresolvedImport
assert PIL is not None and Image is not None
-PIL_VERSION = PIL.__version__
+try:
+ PIL_VERSION = PIL.__version__
+except AttributeError:
+ PIL_VERSION = PIL.PILLOW_VERSION
if hasattr(Image, "DEBUG"):
#for older versions (pre 3.0), use Image.DEBUG flag:
Image.DEBUG = int(PIL_DEBUG)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/gtk_common/gtk_util.py
new/xpra-2.5.1/xpra/gtk_common/gtk_util.py
--- old/xpra-2.5/xpra/gtk_common/gtk_util.py 2019-03-20 05:43:50.000000000
+0100
+++ new/xpra-2.5.1/xpra/gtk_common/gtk_util.py 2019-04-12 17:27:57.000000000
+0200
@@ -108,6 +108,11 @@
def is_realized(widget):
return widget.get_realized()

+ def x11_foreign_new(xid):
+ from gi.repository import GdkX11
+ display = display_get_default()
+ return GdkX11.X11Window.foreign_new_for_display(display, xid)
+
def GDKWindow(parent=None, width=1, height=1,
window_type=gdk.WindowType.TOPLEVEL,
event_mask=0, wclass=gdk.WindowWindowClass.INPUT_OUTPUT,
title=None,
x=None, y=None, override_redirect=False, visual=None,
**kwargs):
@@ -365,12 +370,9 @@
widget.drag_get_data(context, atom, time)

from gi.repository.Gtk import Clipboard #@UnresolvedImport
- CLIPBOARD_SELECTION = {}
- #gtk2: uses strings:
- for x in ("PRIMARY", "SECONDARY", "CLIPBOARD"):
- CLIPBOARD_SELECTION[x] = getattr(gdk, "SELECTION_%s" % bytestostr(x))
def GetClipboard(selection):
- atom = CLIPBOARD_SELECTION.get(selection) or
gdk.Atom.intern(bytestostr(selection), False)
+ sstr = bytestostr(selection)
+ atom = getattr(gdk, "SELECTION_%s" % sstr, None) or
gdk.Atom.intern(sstr, False)
return Clipboard.get(atom)
def clipboard_request_contents(clipboard, target, unpack):
target_atom = gdk.Atom.intern(bytestostr(target), False)
@@ -450,6 +452,9 @@
def get_pixbuf_from_data(rgb_data, has_alpha, w, h, rowstride):
return gdk.pixbuf_new_from_data(rgb_data, gdk.COLORSPACE_RGB,
has_alpha, 8, w, h, rowstride)

+ def x11_foreign_new(xid):
+ return gdk.window_foreign_new_for_display(xid)
+
def GDKWindow(parent=None, width=1, height=1,
window_type=gdk.WINDOW_TOPLEVEL,
event_mask=0, wclass=gdk.INPUT_OUTPUT, title=None, x=-1,
y=-1, **kwargs):
return gdk.Window(parent, width, height, window_type, event_mask,
wclass, title, x, y, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/net/file_transfer.py
new/xpra-2.5.1/xpra/net/file_transfer.py
--- old/xpra-2.5/xpra/net/file_transfer.py 2019-03-20 05:43:50.000000000
+0100
+++ new/xpra-2.5.1/xpra/net/file_transfer.py 2019-04-10 04:48:03.000000000
+0200
@@ -437,7 +437,7 @@
delfile()
return
try:
- job_options = options.get("options")
+ job_options = options.dictget("options")
job_options["copies"] = copies
job = print_files(printer, [filename], title, job_options)
except Exception as e:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/net/ssh.py
new/xpra-2.5.1/xpra/net/ssh.py
--- old/xpra-2.5/xpra/net/ssh.py 2019-03-20 05:43:51.000000000 +0100
+++ new/xpra-2.5.1/xpra/net/ssh.py 2019-04-10 04:48:03.000000000 +0200
@@ -371,7 +371,7 @@
log("verifyhostkeydns failed", exc_info=True)
log.warn("Warning: cannot check SSHFP DNS records")
log.warn(" %s", e)
- log.info("dnscheck=%s", dnscheck)
+ log("dnscheck=%s", dnscheck)
def adddnscheckinfo(q):
if dnscheck is not True:
if dnscheck:
@@ -522,7 +522,7 @@
except SSHException as e:
log("auth_password(..)", exc_info=True)
log.info("SSH password authentication failed:")
- log.info(" %s", e.message)
+ log.info(" %s", getattr(e, "message", e))

def auth_interactive():
log("trying interactive authentication")
@@ -544,7 +544,7 @@
except SSHException as e:
log("auth_interactive(..)", exc_info=True)
log.info("SSH password authentication failed:")
- log.info(" %s", e.message)
+ log.info(" %s", getattr(e, "message", e))

banner = transport.get_banner()
if banner:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/platform/pycups_printing.py
new/xpra-2.5.1/xpra/platform/pycups_printing.py
--- old/xpra-2.5/xpra/platform/pycups_printing.py 2019-03-20
05:43:51.000000000 +0100
+++ new/xpra-2.5.1/xpra/platform/pycups_printing.py 2019-04-10
04:48:03.000000000 +0200
@@ -13,7 +13,7 @@
from threading import Lock
import cups

-from xpra.os_util import OSX, PYTHON3
+from xpra.os_util import OSX, PYTHON3, bytestostr
from xpra.util import engs, envint, envbool, parse_simple_dict
from xpra.log import Logger

@@ -422,8 +422,9 @@
raise Exception("invalid printer: '%s'" % printer)
log("pycups.print_files%s", (printer, filenames, title, options))
actual_options = DEFAULT_CUPS_OPTIONS.copy()
- used_options = dict((str(k),str(v)) for k,v in options.items() if str(k)
in CUPS_OPTIONS_WHITELIST)
- unused_options = dict((str(k),str(v)) for k,v in options.items() if str(k)
not in CUPS_OPTIONS_WHITELIST)
+ s = bytestostr
+ used_options = dict((s(k),s(v)) for k,v in options.items() if s(k) in
CUPS_OPTIONS_WHITELIST)
+ unused_options = dict((s(k),s(v)) for k,v in options.items() if s(k) not
in CUPS_OPTIONS_WHITELIST)
log("used options=%s", used_options)
log("unused options=%s", unused_options)
actual_options.update(used_options)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/platform/win32/__init__.py
new/xpra-2.5.1/xpra/platform/win32/__init__.py
--- old/xpra-2.5/xpra/platform/win32/__init__.py 2019-03-20
05:43:51.000000000 +0100
+++ new/xpra-2.5.1/xpra/platform/win32/__init__.py 2019-04-10
04:48:03.000000000 +0200
@@ -262,8 +262,9 @@
#(which usually does not popup a new shell window)
_wait_for_input = False
return
- if os.environ.get("MSYSCON") or os.environ.get("CYGWIN"):
- #msys environment doesn't popup a new shell window
+ if os.environ.get("TERM", "")=="xterm":
+ #msys, cygwin and git bash environments don't popup a new shell window
+ #and they all set TERM=xterm
_wait_for_input = False
return
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/platform/xposix/appindicator_tray.py
new/xpra-2.5.1/xpra/platform/xposix/appindicator_tray.py
--- old/xpra-2.5/xpra/platform/xposix/appindicator_tray.py 2019-03-20
05:43:51.000000000 +0100
+++ new/xpra-2.5.1/xpra/platform/xposix/appindicator_tray.py 2019-04-10
04:48:03.000000000 +0200
@@ -45,7 +45,7 @@

def __init__(self, *args, **kwargs):
TrayBase.__init__(self, *args, **kwargs)
- filename = get_icon_filename(self.default_icon_filename)
+ filename = get_icon_filename(self.default_icon_filename) or "xpra.png"
self._has_icon = False
self.tmp_filename = None
self.tray_widget = Indicator(self.tooltip, filename,
APPLICATION_STATUS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/platform/xposix/gui.py
new/xpra-2.5.1/xpra/platform/xposix/gui.py
--- old/xpra-2.5/xpra/platform/xposix/gui.py 2019-03-20 05:43:51.000000000
+0100
+++ new/xpra-2.5.1/xpra/platform/xposix/gui.py 2019-04-10 04:48:03.000000000
+0200
@@ -11,7 +11,7 @@
from xpra.os_util import bytestostr, hexstr
from xpra.util import iround, envbool, envint, csv
from xpra.gtk_common.gtk_util import get_xwindow
-from xpra.os_util import is_unity, is_gnome, is_kde, is_X11, is_Wayland
+from xpra.os_util import is_unity, is_gnome, is_kde, is_Fedora, is_X11,
is_Wayland
from xpra.log import Logger

log = Logger("posix")
@@ -37,7 +37,7 @@
GTK_MENUS = envbool("XPRA_GTK_MENUS", False)
RANDR_DPI = envbool("XPRA_RANDR_DPI", True)
XSETTINGS_DPI = envbool("XPRA_XSETTINGS_DPI", True)
-USE_NATIVE_TRAY = envbool("XPRA_USE_NATIVE_TRAY", is_unity() or is_gnome() or
is_kde())
+USE_NATIVE_TRAY = envbool("XPRA_USE_NATIVE_TRAY", is_unity() or (is_gnome()
and not is_Fedora()) or is_kde())
XINPUT_WHEEL_DIV = envint("XPRA_XINPUT_WHEEL_DIV", 15)
DBUS_SCREENSAVER = envbool("XPRA_DBUS_SCREENSAVER", False)

@@ -49,14 +49,7 @@


def get_native_system_tray_classes():
- c = []
- if USE_NATIVE_TRAY:
- try:
- from xpra.platform.xposix.appindicator_tray import AppindicatorTray
- c.append(AppindicatorTray)
- except (ImportError, ValueError):
- traylog("cannot load appindicator tray: %s", exc_info=True)
- return c
+ return []

def get_wm_name():
wm_name = os.environ.get("XDG_CURRENT_DESKTOP", "")
@@ -78,14 +71,21 @@

def get_native_tray_classes():
#could restrict to only DEs that have a broken system tray like "GNOME
Shell"?
+ c = []
+ if USE_NATIVE_TRAY:
+ try:
+ from xpra.platform.xposix.appindicator_tray import AppindicatorTray
+ c.append(AppindicatorTray)
+ except (ImportError, ValueError):
+ traylog("cannot load appindicator tray", exc_info=True)
if has_gtk_menu_support(): #and wm_name=="GNOME Shell":
try:
from xpra.platform.xposix.gtkmenu_tray import GTKMenuTray
traylog("using GTKMenuTray for '%s' window manager", get_wm_name()
or "unknown")
- return [GTKMenuTray]
+ c.append(GTKMenuTray)
except Exception as e:
traylog("cannot load gtk menu tray: %s", e)
- return get_native_system_tray_classes()
+ return c


def get_native_notifier_classes():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/rectangle.pyx
new/xpra-2.5.1/xpra/rectangle.pyx
--- old/xpra-2.5/xpra/rectangle.pyx 2019-03-20 05:43:51.000000000 +0100
+++ new/xpra-2.5.1/xpra/rectangle.pyx 2019-03-28 13:13:12.000000000 +0100
@@ -33,7 +33,7 @@
self.y = y
self.width = w
self.height = h
- self.hash = (self.x+self.y)<<16 + (self.width + self.height)
+ self.hash =
(self.x&0xffff)<<48+(self.y&0xffff)<<32+(self.width&0xffff)<<16+(self.height&0xffff)

def __hash__(self):
return self.hash
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/scripts/config.py
new/xpra-2.5.1/xpra/scripts/config.py
--- old/xpra-2.5/xpra/scripts/config.py 2019-03-20 05:43:51.000000000 +0100
+++ new/xpra-2.5.1/xpra/scripts/config.py 2019-04-16 06:57:10.000000000
+0200
@@ -990,7 +990,7 @@
"desktop-fullscreen": False,
"global-menus" : True,
"forward-xdg-open" : True,
- "modal-windows" : True,
+ "modal-windows" : False,
"bandwidth-detection" : True,
"ssh-upgrade" : True,
"pulseaudio-configure-commands" : [" ".join(x) for x in
DEFAULT_PULSEAUDIO_CONFIGURE_COMMANDS],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/scripts/main.py
new/xpra-2.5.1/xpra/scripts/main.py
--- old/xpra-2.5/xpra/scripts/main.py 2019-03-20 05:43:51.000000000 +0100
+++ new/xpra-2.5.1/xpra/scripts/main.py 2019-03-28 13:13:12.000000000 +0100
@@ -1762,7 +1762,7 @@
log("run_glprobe() backends=%s", backends)
opengl_props, gl_client_window_module =
get_gl_client_window_module(backends, force_enable)
log("run_glprobe() opengl_props=%s, gl_client_window_module=%s",
opengl_props, gl_client_window_module)
- if gl_client_window_module and opengl_props.get("safe", False):
+ if gl_client_window_module and (opengl_props.get("safe", False) or
force_enable):
gl_client_window_class = gl_client_window_module.GLClientWindow
pixel_depth = int(opts.pixel_depth)
log("run_glprobe() gl_client_window_class=%s, pixel_depth=%s",
gl_client_window_class, pixel_depth)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/scripts/server.py
new/xpra-2.5.1/xpra/scripts/server.py
--- old/xpra-2.5/xpra/scripts/server.py 2019-03-20 05:43:51.000000000 +0100
+++ new/xpra-2.5.1/xpra/scripts/server.py 2019-04-10 04:48:03.000000000
+0200
@@ -70,7 +70,10 @@
def _root_prop_get(prop_name, ptype="u32"):
from xpra.gtk_common.gtk_util import get_default_root_window
from xpra.x11.gtk_x11.prop import prop_get
- return prop_get(get_default_root_window(), prop_name, ptype)
+ try:
+ return prop_get(get_default_root_window(), prop_name, ptype)
+ except Exception:
+ return None

def _save_int(prop_name, pid):
_root_prop_set(prop_name, "u32", pid)
@@ -1051,19 +1054,20 @@

display = None
if not proxying:
- no_gtk()
- if POSIX and not OSX and (starting or starting_desktop or shadowing):
- #check that we can access the X11 display:
- from xpra.x11.vfb_util import verify_display_ready
- if not verify_display_ready(xvfb, display_name, shadowing):
- return 1
- if not PYTHON3:
- from xpra.x11.gtk2.gdk_display_util import verify_gdk_display
#@UnusedImport
- else:
- from xpra.x11.gtk3.gdk_display_util import verify_gdk_display
#@Reimport
- display = verify_gdk_display(display_name)
- if not display:
- return 1
+ if POSIX and not OSX:
+ no_gtk()
+ if starting or starting_desktop or shadowing:
+ #check that we can access the X11 display:
+ from xpra.x11.vfb_util import verify_display_ready
+ if not verify_display_ready(xvfb, display_name, shadowing):
+ return 1
+ if not PYTHON3:
+ from xpra.x11.gtk2.gdk_display_util import
verify_gdk_display #@UnusedImport
+ else:
+ from xpra.x11.gtk3.gdk_display_util import
verify_gdk_display #@Reimport
+ display = verify_gdk_display(display_name)
+ if not display:
+ return 1
#on win32, this ensures that we get the correct screen size to shadow:
from xpra.platform.gui import init as gui_init
gui_init()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/mixins/fileprint_server.py
new/xpra-2.5.1/xpra/server/mixins/fileprint_server.py
--- old/xpra-2.5/xpra/server/mixins/fileprint_server.py 2019-03-20
05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/server/mixins/fileprint_server.py 2019-04-10
04:48:03.000000000 +0200
@@ -138,7 +138,7 @@
if len(packet)>=4:
mimetype = packet[3]
if len(packet)>=5:
- source_uuid = packet[4]
+ source_uuid = bytestostr(packet[4])
if len(packet)>=6:
title = packet[5]
if len(packet)>=7:
@@ -152,7 +152,7 @@
printlog.error("Error: invalid mimetype in print packet:")
printlog.error(" %s", repr_ellipsized(mimetype))
return
- if isinstance(print_options, dict):
+ if not isinstance(print_options, dict):
s = bytestostr(print_options)
print_options = {}
for x in s.split(" "):
@@ -182,7 +182,7 @@
printlog("will try to send to %i clients: %s", len(sources), sources)
for ss in sources:
if source_uuid not in ("*", ss.uuid):
- printlog("not sending to %s (wanted uuid=%s)", ss, source_uuid)
+ printlog("not sending to %s (uuid=%s, wanted uuid=%s)", ss,
ss.uuid, source_uuid)
continue
if not ss.printing:
if source_uuid!='*':
@@ -197,7 +197,7 @@
if printer not in ss.printers:
printlog.warn("Warning: client %s does not have a '%s'
printer", ss.uuid, printer)
continue
- printlog("'%s' sent to %s for printing on '%s'", title or
filename, ss, printer)
+ printlog("'%s' sent to %s for printing on '%s'", bytestostr(title
or filename), ss, printer)
if ss.send_file(filename, mimetype, file_data, len(file_data),
True, True, options):
sent += 1
#warn if not sent:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/proxy/proxy_instance_process.py
new/xpra-2.5.1/xpra/server/proxy/proxy_instance_process.py
--- old/xpra-2.5/xpra/server/proxy/proxy_instance_process.py 2019-03-20
05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/server/proxy/proxy_instance_process.py 2019-04-16
06:57:10.000000000 +0200
@@ -323,7 +323,7 @@

enclog("encoder types found: %s", tuple(encoder_types))
#remove duplicates and use preferred order:
- order = PREFERRED_ENCODER_ORDER[:]
+ order = list(PREFERRED_ENCODER_ORDER)
for x in tuple(encoder_types):
if x not in order:
order.append(x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/server_base.py
new/xpra-2.5.1/xpra/server/server_base.py
--- old/xpra-2.5/xpra/server/server_base.py 2019-03-20 05:43:52.000000000
+0100
+++ new/xpra-2.5.1/xpra/server/server_base.py 2019-03-28 13:13:12.000000000
+0100
@@ -503,7 +503,7 @@
#if len(packet>=2):
# uuid = packet[1]
if len(packet)>=4:
- categories = packet[3]
+ categories = tuple(bytestostr(x) for x in packet[3])
def info_callback(_proto, info):
assert proto==_proto
if categories:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/server_core.py
new/xpra-2.5.1/xpra/server/server_core.py
--- old/xpra-2.5/xpra/server/server_core.py 2019-03-20 05:43:52.000000000
+0100
+++ new/xpra-2.5.1/xpra/server/server_core.py 2019-04-16 06:57:10.000000000
+0200
@@ -963,6 +963,7 @@
def handle_ssh_connection(self, conn):
from xpra.server.ssh import make_ssh_server_connection, log as sshlog
socktype = conn.socktype_wrapped
+ none_auth = not self.auth_classes[socktype]
sshlog("handle_ssh_connection(%s) socktype wrapped=%s", conn, socktype)
def ssh_password_authenticate(username, password):
if not POSIX or getuid()!=0:
@@ -996,7 +997,7 @@
if not r:
return False
return True
- return make_ssh_server_connection(conn, ssh_password_authenticate)
+ return make_ssh_server_connection(conn, none_auth=none_auth,
password_auth=ssh_password_authenticate)

def try_upgrade_to_rfb(self, proto):
self.cancel_upgrade_to_rfb_timer(proto)
@@ -1530,7 +1531,7 @@
#skip the authentication module we have "passed" already:
remaining_authenticators = tuple(x for x in proto.authenticators if
not x.passed)

- client_expects_challenge = c.get("challenge") is not None
+ client_expects_challenge = c.strget("challenge") is not None
challenge_response = c.strget("challenge_response")
client_salt = c.strget("challenge_client_salt")
if client_expects_challenge and not remaining_authenticators:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xpra-2.5/xpra/server/shadow/gtk_shadow_server_base.py
new/xpra-2.5.1/xpra/server/shadow/gtk_shadow_server_base.py
--- old/xpra-2.5/xpra/server/shadow/gtk_shadow_server_base.py 2019-03-20
05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/server/shadow/gtk_shadow_server_base.py 2019-04-10
04:48:03.000000000 +0200
@@ -155,13 +155,17 @@
return None
pointer = super(GTKShadowServerBase, self)._adjust_pointer(proto, wid,
opointer)
#the window may be at an offset (multi-window for multi-monitor):
- wx, wy, ww, wh = window.geometry
+ wx, wy, ww, wh = window.get_geometry()
#or maybe the pointer is off-screen:
x, y = pointer[:2]
if x<0 or x>=ww or y<0 or y>=wh:
self.suspend_cursor(proto)
return None
self.restore_cursor(proto)
+ #note: with x11 shadow servers,
+ # X11ServerCore._get_pointer_abs_coordinates() will recalculate
+ # the absolute coordinates from the relative ones,
+ # and it should end up with the same values we calculated here
ax = x+wx
ay = y+wy
return [ax, ay]+list(pointer[2:])
@@ -197,23 +201,24 @@
tw.cleanup()

def setup_tray(self):
+ if OSX:
+ return
try:
from xpra.gtk_common.gobject_compat import import_gtk
gtk = import_gtk()
from xpra.gtk_common.gtk_util import popup_menu_workaround
#menu:
- if not OSX:
- label = u"Xpra Shadow Server"
- display = os.environ.get("DISPLAY")
- if POSIX and display:
- label = u"Xpra %s Shadow Server" % display
- self.tray_menu = gtk.Menu()
- self.tray_menu.set_title(label)
- title_item = gtk.MenuItem()
- title_item.set_label(label)
- title_item.set_sensitive(False)
- title_item.show()
- self.tray_menu.append(title_item)
+ label = u"Xpra Shadow Server"
+ display = os.environ.get("DISPLAY")
+ if POSIX and display:
+ label = u"Xpra %s Shadow Server" % display
+ self.tray_menu = gtk.Menu()
+ self.tray_menu.set_title(label)
+ title_item = gtk.MenuItem()
+ title_item.set_label(label)
+ title_item.set_sensitive(False)
+ title_item.show()
+ self.tray_menu.append(title_item)
from xpra.gtk_common.about import about
self.tray_menu.append(self.traymenuitem("About Xpra",
"information.png", None, about))
if server_features.windows:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/shadow/root_window_model.py
new/xpra-2.5.1/xpra/server/shadow/root_window_model.py
--- old/xpra-2.5/xpra/server/shadow/root_window_model.py 2019-03-20
05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/server/shadow/root_window_model.py 2019-04-10
04:48:03.000000000 +0200
@@ -87,8 +87,7 @@
return self.geometry[2:4]

def get_geometry(self):
- w, h = self.get_dimensions()
- return (0, 0, w, h)
+ return self.geometry


def get_property_names(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/source/clipboard_connection.py
new/xpra-2.5.1/xpra/server/source/clipboard_connection.py
--- old/xpra-2.5/xpra/server/source/clipboard_connection.py 2019-03-20
05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/server/source/clipboard_connection.py 2019-04-16
06:57:10.000000000 +0200
@@ -53,7 +53,7 @@
log("client clipboard: greedy=%s, want_targets=%s,
client_selections=%s, contents_slice_fix=%s",
self.clipboard_greedy, self.clipboard_want_targets,
self.clipboard_client_selections,
self.clipboard_contents_slice_fix)
- if not self.clipboard_contents_slice_fix:
+ if self.clipboard_enabled and not self.clipboard_contents_slice_fix:
log.info("client clipboard does not include contents slice fix")

def get_info(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/ssh.py
new/xpra-2.5.1/xpra/server/ssh.py
--- old/xpra-2.5/xpra/server/ssh.py 2019-03-20 05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/server/ssh.py 2019-04-10 04:48:03.000000000 +0200
@@ -221,9 +221,9 @@
return False


-def make_ssh_server_connection(conn, password_auth=None):
- log("make_ssh_server_connection(%s)", conn)
- ssh_server = SSHServer(password_auth=password_auth)
+def make_ssh_server_connection(conn, none_auth=False, password_auth=None):
+ log("make_ssh_server_connection%s", (conn, none_auth, password_auth))
+ ssh_server = SSHServer(none_auth=none_auth, password_auth=password_auth)
DoGSSAPIKeyExchange = False
t = None
def close():
@@ -314,5 +314,6 @@
log.warn(" closing connection from %s", pretty_socket(conn.target))
close()
return None
- #log("client authenticated, channel=%s", chan)
- return SSHSocketConnection(ssh_server.proxy_channel, conn._socket,
target="ssh client")
+ log("client authenticated, channel=%s", chan)
+ sock = conn._socket
+ return SSHSocketConnection(ssh_server.proxy_channel, sock, conn.local,
conn.endpoint, conn.target)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/window/window_video_source.py
new/xpra-2.5.1/xpra/server/window/window_video_source.py
--- old/xpra-2.5/xpra/server/window/window_video_source.py 2019-03-20
05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/server/window/window_video_source.py 2019-03-28
13:13:12.000000000 +0100
@@ -1816,11 +1816,11 @@
csize = len(data)
compresslog("compress: %5.1fms for %4ix%-4i pixels at %4i,%-4i
for wid=%-5i using %9s with ratio %5.1f%% (%5iKB to %5iKB), sequence %5i,
client_options=%s",
(monotonic_time()-substart)*1000.0, w, sh, x+0, y+sy,
self.wid, coding, 100.0*csize/psize, psize/1024, csize/1024,
self._damage_packet_sequence, client_options)
- scrolllog("non-scroll encoding using %s (quality=%i, speed=%i)
took %ims for %i rectangles",
- encoding, self._current_quality,
self._current_speed, (monotonic_time()-nsstart)*1000, len(non_scroll))
- else:
- #we can't send the non-scroll areas, ouch!
- flush = 0
+ scrolllog("non-scroll encoding using %s (quality=%i, speed=%i)
took %ims for %i rectangles",
+ encoding, self._current_quality, self._current_speed,
(monotonic_time()-nsstart)*1000, len(non_scroll))
+ else:
+ #we can't send the non-scroll areas, ouch!
+ flush = 0
assert flush==0
self.last_scroll_time = monotonic_time()
scrolllog("scroll encoding total time: %ims",
(self.last_scroll_time-start)*1000)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/server/window/windowicon_source.py
new/xpra-2.5.1/xpra/server/window/windowicon_source.py
--- old/xpra-2.5/xpra/server/window/windowicon_source.py 2019-03-20
05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/server/window/windowicon_source.py 2019-03-20
14:37:17.000000000 +0100
@@ -10,7 +10,7 @@
import threading
from PIL import Image

-from xpra.os_util import monotonic_time, load_binary_file,
memoryview_to_bytes, BytesIOClass
+from xpra.os_util import monotonic_time, load_binary_file,
memoryview_to_bytes, strtobytes, BytesIOClass
from xpra.net import compression
from xpra.util import envbool, envint
from xpra.log import Logger
@@ -236,7 +236,7 @@
else:
if image:
pixel_data = image.tobytes("raw", "RGBA")
- wrapper = self.compressed_wrapper("premult_argb32",
str(pixel_data))
+ wrapper = self.compressed_wrapper("premult_argb32",
strtobytes(pixel_data))
packet = ("window-icon", self.wid, w, h, wrapper.datatype, wrapper)
log("queuing window icon update: %s", packet)
self.queue_packet(packet, wait_for_more=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/src_info.py
new/xpra-2.5.1/xpra/src_info.py
--- old/xpra-2.5/xpra/src_info.py 2019-03-20 05:44:42.000000000 +0100
+++ new/xpra-2.5.1/xpra/src_info.py 2019-04-16 06:57:14.000000000 +0200
@@ -1,2 +1,2 @@
LOCAL_MODIFICATIONS=0
-REVISION=22144
+REVISION=22432
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/x11/bindings/keyboard_bindings.pyx
new/xpra-2.5.1/xpra/x11/bindings/keyboard_bindings.pyx
--- old/xpra-2.5/xpra/x11/bindings/keyboard_bindings.pyx 2019-03-20
05:43:52.000000000 +0100
+++ new/xpra-2.5.1/xpra/x11/bindings/keyboard_bindings.pyx 2019-04-16
06:57:10.000000000 +0200
@@ -506,17 +506,20 @@

cdef KeySym _parse_keysym(self, symbol):
cdef KeySym keysym
- if symbol in ["NoSymbol", "VoidSymbol"]:
- return NoSymbol
s = strtobytes(symbol)
+ if s in [b"NoSymbol", b"VoidSymbol"]:
+ return NoSymbol
keysym = XStringToKeysym(s)
if keysym==NoSymbol:
- if symbol.startswith("U+"):
- symbol = "0x"+symbol[2:]
- if symbol.lower().startswith("0x"):
- return int(symbol, 16)
- if len(symbol)>0 and symbol[0] in ["0", "1", "2", "3", "4", "5",
"6", "7", "8", "9"]:
- return int(symbol)
+ if s.startswith(b"U+"):
+ s = b"0x"+s[2:]
+ if s.lower().startswith(b"0x"):
+ return int(s, 16)
+ if len(s)>0:
+ try:
+ return int(s)
+ except ValueError:
+ pass
return NoSymbol
return keysym

diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xpra-2.5/xpra/x11/gtk_x11/tray.py
new/xpra-2.5.1/xpra/x11/gtk_x11/tray.py
--- old/xpra-2.5/xpra/x11/gtk_x11/tray.py 2019-03-20 05:43:52.000000000
+0100
+++ new/xpra-2.5.1/xpra/x11/gtk_x11/tray.py 2019-04-10 04:48:03.000000000
+0200
@@ -8,7 +8,7 @@
from xpra.x11.gtk_x11.prop import prop_set, prop_get
from xpra.gtk_common.gobject_compat import import_gdk, import_gobject, is_gtk3
from xpra.gtk_common.gtk_util import (
- display_get_default, get_default_root_window, get_xwindow, GDKWindow,
+ display_get_default, get_default_root_window, get_xwindow, GDKWindow,
x11_foreign_new,
STRUCTURE_MASK, EXPOSURE_MASK, PROPERTY_CHANGE_MASK,
)
from xpra.x11.bindings.window_bindings import constants, X11WindowBindings
#@UnresolvedImport
@@ -218,7 +218,7 @@
def dock_tray(self, xid):
log("dock_tray(%#x)", xid)
root = get_default_root_window()
- window = gdk.window_foreign_new(xid)
+ window = x11_foreign_new(xid)
if window is None:
log.warn("could not find gdk window for tray window %#x", xid)
return



< Previous Next >
This Thread