Hello community,

here is the log from the commit of package xpra for openSUSE:Factory checked in 
at 2020-05-17 23:43:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xpra (Old)
 and      /work/SRC/openSUSE:Factory/.xpra.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xpra"

Sun May 17 23:43:32 2020 rev:20 rq:806264 version:4.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/xpra/xpra.changes        2020-05-11 
13:43:47.141429111 +0200
+++ /work/SRC/openSUSE:Factory/.xpra.new.2738/xpra.changes      2020-05-17 
23:43:36.217110119 +0200
@@ -1,0 +2,11 @@
+Sun May 17 16:39:00 UTC 2020 - Luigi Baldoni <[email protected]>
+
+- Update to version 4.0.1
+  * fix missing content-type for some windows
+  * fix GTK server crash on exit
+  * fix compatibility with newer versions of uglifyjs
+  * fix ssh session start and attach on Posix systems
+  * fix 'xpra send-file' to use absolute file paths
+  * fix MacOS shadow servers failing to accept connections
+
+-------------------------------------------------------------------

Old:
----
  xpra-4.0.tar.xz

New:
----
  xpra-4.0.1.tar.xz

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

Other differences:
------------------
++++++ xpra.spec ++++++
--- /var/tmp/diff_new_pack.hEpxiz/_old  2020-05-17 23:43:39.289116287 +0200
+++ /var/tmp/diff_new_pack.hEpxiz/_new  2020-05-17 23:43:39.293116295 +0200
@@ -19,7 +19,7 @@
 
 %global __requires_exclude 
^typelib\\(GtkosxApplication\\)|typelib\\(GdkGLExt\\)|typelib\\(GtkGLExt\\).*$
 Name:           xpra
-Version:        4.0
+Version:        4.0.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-4.0.tar.xz -> xpra-4.0.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/NEWS new/xpra-4.0.1/NEWS
--- old/xpra-4.0/NEWS   2020-05-10 19:00:48.000000000 +0200
+++ new/xpra-4.0.1/NEWS 2020-05-17 18:12:15.000000000 +0200
@@ -1,3 +1,15 @@
+v4.0 (2020-05-17)
+======================
+       -- fix missing content-type for some windows
+       -- fix GTK server crash on exit
+       -- fix compatibility with newer versions of uglifyjs
+       -- fix ssh session start and attach on Posix systems
+       -- fix missing avcodec encodings with Ubuntu 18.04
+       -- fix 'xpra send-file' to use absolute file paths
+       -- fix MacOS shadow servers failing to accept connections
+       -- don't depend on gnome bits if plasma-desktop is installed
+
+
 v4.0 (2020-05-10)
 ======================
        -- Drop support for:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/cups/xpraforwarder 
new/xpra-4.0.1/cups/xpraforwarder
--- old/xpra-4.0/cups/xpraforwarder     2020-05-10 19:00:48.000000000 +0200
+++ new/xpra-4.0.1/cups/xpraforwarder   2020-05-17 18:12:15.000000000 +0200
@@ -38,7 +38,7 @@
 from urllib.parse import urlparse, parse_qs
 
 
-__version__ = "4.0"
+__version__ = "4.0.1"
 
 
 #Writes a syslog entry (msg) at the default facility:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/html5/js/Client.js 
new/xpra-4.0.1/html5/js/Client.js
--- old/xpra-4.0/html5/js/Client.js     2020-05-10 19:00:48.000000000 +0200
+++ new/xpra-4.0.1/html5/js/Client.js   2020-05-17 18:12:15.000000000 +0200
@@ -2475,32 +2475,33 @@
                window.closeNotification(nid);
        }
 
-       if ("Notification" in window && actions.length==0) {
-               function notify() {
-                       let icon_url = "";
-                       if (icon) {
-                               icon_url = "data:image/png;base64," + 
Utilities.ArrayBufferToBase64(icon);
-                       }
-                       /*
-                       const nactions = [];
-                       if (actions) {
-                               ctx.log("actions=", actions);
-                               for (let i=0; i<actions.length/2;++i) {
-                                       nactions.push({
-                                               "action"        : actions[i*2],
-                                               "title"         : 
actions[i*2+1],
-                                       });
-                               }
-                       }*/
-                       const notification = new Notification(summary, { body: 
body, icon: icon_url });
-                       notification.onclose = function() {
-                               const reason = 2;       //closed by the user - 
best guess...
-                               ctx.send(["notification-close", nid, reason, 
""]);
-                       };
-                       notification.onclick = function() {
-                               ctx.log("user clicked on notification", nid);
-                       };
+       function notify() {
+               let icon_url = "";
+               if (icon) {
+                       icon_url = "data:image/png;base64," + 
Utilities.ArrayBufferToBase64(icon);
                }
+               /*
+               const nactions = [];
+               if (actions) {
+                       ctx.log("actions=", actions);
+                       for (let i=0; i<actions.length/2;++i) {
+                               nactions.push({
+                                       "action"        : actions[i*2],
+                                       "title"         : actions[i*2+1],
+                               });
+                       }
+               }*/
+               const notification = new Notification(summary, { body: body, 
icon: icon_url });
+               notification.onclose = function() {
+                       const reason = 2;       //closed by the user - best 
guess...
+                       ctx.send(["notification-close", nid, reason, ""]);
+               };
+               notification.onclick = function() {
+                       ctx.log("user clicked on notification", nid);
+               };
+       }
+
+       if ("Notification" in window && actions.length==0) {
                //we have notification support in the browser
                if (Notification.permission === "granted") {
                        notify();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/html5/js/Utilities.js 
new/xpra-4.0.1/html5/js/Utilities.js
--- old/xpra-4.0/html5/js/Utilities.js  2020-05-10 19:00:49.000000000 +0200
+++ new/xpra-4.0.1/html5/js/Utilities.js        2020-05-17 18:12:15.000000000 
+0200
@@ -10,7 +10,7 @@
 'use strict';
 
 const Utilities = {
-       VERSION : "4.0",
+       VERSION : "4.0.1",
        REVISION : "0",
        LOCAL_MODIFICATIONS : "0",
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/setup.py new/xpra-4.0.1/setup.py
--- old/xpra-4.0/setup.py       2020-05-10 19:00:50.000000000 +0200
+++ new/xpra-4.0.1/setup.py     2020-05-17 18:12:15.000000000 +0200
@@ -2175,7 +2175,7 @@
     if get_gcc_version()>=[9, 0]:
         add_to_keywords(avcodec2_pkgconfig, 'extra_compile_args', 
"-Wno-error=attributes")
     cython_add(Extension("xpra.codecs.dec_avcodec2.decoder",
-                ["xpra/codecs/dec_avcodec2/decoder.pyx"],
+                ["xpra/codecs/dec_avcodec2/decoder.pyx", 
"xpra/codecs/dec_avcodec2/register_compat.c"],
                 **avcodec2_pkgconfig))
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/setup_html5.py new/xpra-4.0.1/setup_html5.py
--- old/xpra-4.0/setup_html5.py 2020-05-10 19:00:50.000000000 +0200
+++ new/xpra-4.0.1/setup_html5.py       2020-05-17 18:12:15.000000000 +0200
@@ -139,7 +139,6 @@
 
                     if minifier=="uglifyjs":
                         minify_cmd = ["uglifyjs",
-                                      "--screw-ie8",
                                       fsrc,
                                       "-o", dst,
                                       "--compress",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/svn-info new/xpra-4.0.1/svn-info
--- old/xpra-4.0/svn-info       2020-05-10 19:01:52.000000000 +0200
+++ new/xpra-4.0.1/svn-info     2020-05-17 18:12:20.000000000 +0200
@@ -4,10 +4,10 @@
 Relative URL: ^/tags/v4.0.x/src
 Repository Root: file:///var/svn/repos/Xpra
 Repository UUID: 3bb7dfac-3a0b-4e04-842a-767bc560f471
-Revision: 26307
+Revision: 26380
 Node Kind: directory
 Schedule: normal
 Last Changed Author: antoine
-Last Changed Rev: 26305
-Last Changed Date: 2020-05-10 15:59:06 +0100 (Sun, 10 May 2020)
+Last Changed Rev: 26379
+Last Changed Date: 2020-05-17 16:07:55 +0100 (Sun, 17 May 2020)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/svn-version new/xpra-4.0.1/svn-version
--- old/xpra-4.0/svn-version    2020-05-10 19:01:52.000000000 +0200
+++ new/xpra-4.0.1/svn-version  2020-05-17 18:12:20.000000000 +0200
@@ -1 +1 @@
-26307
+26380
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/win32/MINGW_SETUP.sh 
new/xpra-4.0.1/win32/MINGW_SETUP.sh
--- old/xpra-4.0/win32/MINGW_SETUP.sh   2020-05-10 19:00:52.000000000 +0200
+++ new/xpra-4.0.1/win32/MINGW_SETUP.sh 2020-05-17 18:12:15.000000000 +0200
@@ -37,7 +37,7 @@
 $PACMAN --noconfirm -S ${XPKG}gst-python
 #development tools and libs for building extra packages:
 $PACMAN --noconfirm -S base-devel ${XPKG}yasm ${XPKG}nasm subversion rsync zip 
gtk-doc ${XPKG}cmake ${XPKG}gcc ${XPKG}pkg-config ${XPKG}libffi
-for x in cryptography cffi pycparser numpy pillow cx_Freeze appdirs paramiko 
comtypes netifaces rencode setproctitle pyu2f ldap ldap3 bcrypt pynacl lz4 
brotli PyOpenGL nvidia-ml zeroconf certifi yaml py-cpuinfo winkerberos gssapi 
coverage; do
+for x in cryptography cffi pycparser numpy pillow cx_Freeze appdirs paramiko 
comtypes netifaces rencode setproctitle pyu2f ldap ldap3 bcrypt pynacl lz4 lzo 
brotli PyOpenGL nvidia-ml zeroconf certifi yaml py-cpuinfo winkerberos gssapi 
coverage; do
        $PACMAN --noconfirm -S ${XPKG}python-${x}
 done
 $PACMAN --noconfirm -S ${XPKG}cython
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/win32/xpra.iss new/xpra-4.0.1/win32/xpra.iss
--- old/xpra-4.0/win32/xpra.iss 2020-05-10 19:00:53.000000000 +0200
+++ new/xpra-4.0.1/win32/xpra.iss       2020-05-17 18:12:15.000000000 +0200
@@ -1,9 +1,9 @@
 [Setup]
 AppName=Xpra
 AppId=Xpra_is1
-AppVersion=4.0
-AppVerName=Xpra 4.0
-UninstallDisplayName=Xpra 4.0
+AppVersion=4.0.1
+AppVerName=Xpra 4.0.1
+UninstallDisplayName=Xpra 4.0.1
 AppPublisher=xpra.org
 AppPublisherURL=http:;xpra.org/
 DefaultDirName={pf}\Xpra
@@ -16,7 +16,7 @@
 Compression=lzma2/max
 SolidCompression=yes
 AllowUNCPath=false
-VersionInfoVersion=4.0
+VersionInfoVersion=4.0.1
 VersionInfoCompany=xpra.org
 VersionInfoDescription=multi-platform screen and application forwarding system
 WizardImageFile=win32\xpra-logo.bmp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/__init__.py 
new/xpra-4.0.1/xpra/__init__.py
--- old/xpra-4.0/xpra/__init__.py       2020-05-10 19:01:53.000000000 +0200
+++ new/xpra-4.0.1/xpra/__init__.py     2020-05-17 18:12:22.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__ = "4.0"
+__version__ = "4.0.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/codecs/dec_avcodec2/decoder.pyx 
new/xpra-4.0.1/xpra/codecs/dec_avcodec2/decoder.pyx
--- old/xpra-4.0/xpra/codecs/dec_avcodec2/decoder.pyx   2020-05-10 
19:00:54.000000000 +0200
+++ new/xpra-4.0.1/xpra/codecs/dec_avcodec2/decoder.pyx 2020-05-17 
18:12:15.000000000 +0200
@@ -23,6 +23,9 @@
 from libc.string cimport memset, memcpy
 
 
+cdef extern from "register_compat.h":
+    void register_all()
+
 cdef extern from "libavutil/mem.h":
     void av_free(void *ptr)
 
@@ -131,6 +134,7 @@
 def get_version():
     return (LIBAVCODEC_VERSION_MAJOR, LIBAVCODEC_VERSION_MINOR, 
LIBAVCODEC_VERSION_MICRO)
 
+register_all()
 CODECS = []
 if avcodec_find_decoder(AV_CODEC_ID_H264)!=NULL:
     CODECS.append("h264")
@@ -325,6 +329,8 @@
             return  False
         self.actual_pix_fmt = self.pix_fmt
 
+        register_all()
+
         cdef AVCodecID CodecID
         if self.encoding=="h264":
             CodecID = AV_CODEC_ID_H264
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/codecs/dec_avcodec2/register_compat.c 
new/xpra-4.0.1/xpra/codecs/dec_avcodec2/register_compat.c
--- old/xpra-4.0/xpra/codecs/dec_avcodec2/register_compat.c     1970-01-01 
01:00:00.000000000 +0100
+++ new/xpra-4.0.1/xpra/codecs/dec_avcodec2/register_compat.c   2020-05-17 
18:12:15.000000000 +0200
@@ -0,0 +1,13 @@
+// This file is part of Xpra.
+// Copyright (C) 2018 Antoine Martin <[email protected]>
+// Xpra is released under the terms of the GNU GPL v2, or, at your option, any
+// later version. See the file COPYING for details.
+
+#include "libavcodec/version.h"
+#include "libavformat/avformat.h"
+
+void register_all(void) {
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 9, 100)
+     av_register_all();
+#endif
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/codecs/dec_avcodec2/register_compat.h 
new/xpra-4.0.1/xpra/codecs/dec_avcodec2/register_compat.h
--- old/xpra-4.0/xpra/codecs/dec_avcodec2/register_compat.h     1970-01-01 
01:00:00.000000000 +0100
+++ new/xpra-4.0.1/xpra/codecs/dec_avcodec2/register_compat.h   2020-05-17 
18:12:15.000000000 +0200
@@ -0,0 +1,6 @@
+// This file is part of Xpra.
+// Copyright (C) 2018 Antoine Martin <[email protected]>
+// Xpra is released under the terms of the GNU GPL v2, or, at your option, any
+// later version. See the file COPYING for details.
+
+void register_all(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/scripts/main.py 
new/xpra-4.0.1/xpra/scripts/main.py
--- old/xpra-4.0/xpra/scripts/main.py   2020-05-10 19:00:55.000000000 +0200
+++ new/xpra-4.0.1/xpra/scripts/main.py 2020-05-17 18:12:15.000000000 +0200
@@ -1412,6 +1412,8 @@
     errors = 0
     for f in files:
         filelog("run_send_file(%s) sending '%s'", extra_args, f)
+        if not os.path.isabs(f):
+            f = os.path.abspath(f)
         #xpra control :10 send-file /path/to/the-file-to-send open CLIENT_UUID
         cmd = xpra_cmd + ["control", uri, "send-file", f]
         filelog("cmd=%s", cmd)
@@ -2429,7 +2431,7 @@
             if WIN32:
                 uri = "named-pipe://%s" % display_name
             else:
-                uri = "socket://%s" % display_name
+                uri = "socket://%s" % socket_path
             display = parse_display_name(error_cb, opts, uri)
             if proc and proc.poll() is None:
                 #start a thread just to reap server startup process (yuk)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/server/gtk_server_base.py 
new/xpra-4.0.1/xpra/server/gtk_server_base.py
--- old/xpra-4.0/xpra/server/gtk_server_base.py 2020-05-10 19:00:55.000000000 
+0200
+++ new/xpra-4.0.1/xpra/server/gtk_server_base.py       2020-05-17 
18:12:15.000000000 +0200
@@ -92,12 +92,10 @@
         # (if gtk has been loaded)
         gdk_mod = sys.modules.get("gtk.gdk") or 
sys.modules.get("gi.repository.Gdk")
         #bug 2328: python3 shadow server segfault on Ubuntu 16.04
-        safe_close = self.session_type!="shadow"
-        if WIN32:
-            safe_close = False
-        close = envbool("XPRA_CLOSE_GTK_DISPLAY", safe_close)
-        log("close_gtk_display() safe_close=%s, close=%s, gdk_mod=%s",
-            safe_close, close, gdk_mod)
+        #also crashes on Ubuntu 20.04
+        close = envbool("XPRA_CLOSE_GTK_DISPLAY", False)
+        log("close_gtk_display() close=%s, gdk_mod=%s",
+            close, gdk_mod)
         if close and gdk_mod:
             displays = Gdk.DisplayManager.get().list_displays()
             log("close_gtk_display() displays=%s", displays)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/server/mixins/child_command_server.py 
new/xpra-4.0.1/xpra/server/mixins/child_command_server.py
--- old/xpra-4.0/xpra/server/mixins/child_command_server.py     2020-05-10 
19:00:55.000000000 +0200
+++ new/xpra-4.0.1/xpra/server/mixins/child_command_server.py   2020-05-17 
18:12:15.000000000 +0200
@@ -183,12 +183,16 @@
             return None
         if not self.start_new_commands:
             return None
-        if POSIX or OSX:
+        if OSX:
+            return None
+        if POSIX:
             from xpra.platform.xposix.xdg_helper import load_xdg_menu_data
             return load_xdg_menu_data(force_reload)
-        elif WIN32:
+        if WIN32:
             from xpra.platform.win32.menu_helper import load_menu
             return load_menu()
+        log.error("Error: unsupported platform!")
+        return None
 
     def get_caps(self, source) -> dict:
         caps = {}
@@ -200,7 +204,7 @@
             if not source.xdg_menu_update:
                 #we have to send it now:
                 xdg_menu = self._get_xdg_menu_data()
-                log.warn("%i entries sent in hello", len(xdg_menu))
+                log("%i entries sent in hello", len(xdg_menu or ()))
                 if xdg_menu:
                     l = len(str(xdg_menu))
                     #arbitrary: don't use more than half
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/src_info.py 
new/xpra-4.0.1/xpra/src_info.py
--- old/xpra-4.0/xpra/src_info.py       2020-05-10 19:01:52.000000000 +0200
+++ new/xpra-4.0.1/xpra/src_info.py     2020-05-17 18:12:20.000000000 +0200
@@ -1,2 +1,2 @@
 LOCAL_MODIFICATIONS=0
-REVISION=26307
+REVISION=26380
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/x11/gtk_x11/wm.py 
new/xpra-4.0.1/xpra/x11/gtk_x11/wm.py
--- old/xpra-4.0/xpra/x11/gtk_x11/wm.py 2020-05-10 19:00:56.000000000 +0200
+++ new/xpra-4.0.1/xpra/x11/gtk_x11/wm.py       2020-05-17 18:12:15.000000000 
+0200
@@ -17,7 +17,7 @@
 from xpra.x11.common import Unmanageable
 from xpra.x11.gtk_x11.selection import ManagerSelection
 from xpra.x11.models.window import WindowModel, configure_bits
-from xpra.x11.gtk_x11.world_window import WorldWindow
+from xpra.x11.gtk_x11.world_window import WorldWindow, destroy_world_window
 from xpra.x11.gtk_x11.gdk_bindings import (
     add_event_receiver,                              #@UnresolvedImport
     add_fallback_receiver, remove_fallback_receiver, #@UnresolvedImport
@@ -406,6 +406,8 @@
         with xswallow:
             prop_del(self._ewmh_window, "_NET_SUPPORTING_WM_CHECK")
             prop_del(self._ewmh_window, "_NET_WM_NAME")
+        destroy_world_window()
+
 
     def do_child_map_request_event(self, event):
         log("Found a potential client")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/x11/gtk_x11/world_window.py 
new/xpra-4.0.1/xpra/x11/gtk_x11/world_window.py
--- old/xpra-4.0/xpra/x11/gtk_x11/world_window.py       2020-05-10 
19:00:56.000000000 +0200
+++ new/xpra-4.0.1/xpra/x11/gtk_x11/world_window.py     2020-05-17 
18:12:15.000000000 +0200
@@ -90,6 +90,14 @@
     global world_window
     return world_window
 
+def destroy_world_window():
+    global world_window
+    ww = world_window
+    if ww:
+        world_window = None
+        ww.destroy()
+
+
 class WorldWindow(Gtk.Window):
     def __init__(self, screen=Gdk.Screen.get_default()):
         global world_window
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xpra-4.0/xpra/x11/models/base.py 
new/xpra-4.0.1/xpra/x11/models/base.py
--- old/xpra-4.0/xpra/x11/models/base.py        2020-05-10 19:00:56.000000000 
+0200
+++ new/xpra-4.0.1/xpra/x11/models/base.py      2020-05-17 18:12:15.000000000 
+0200
@@ -392,12 +392,15 @@
             #the _XPRA_CONTENT_TYPE property takes precedence
             return
         content_type = guess_content_type(self)
-        metalog("content_type=%s", content_type)
+        metalog("guess_content_type(%s)=%s", self, content_type)
         self._updateprop("content-type", content_type)
 
     def _handle_xpra_content_type_change(self):
         content_type = self.prop_get("_XPRA_CONTENT_TYPE", "latin1", True) or 
""
         metalog("content_type=%s", content_type)
+        if not content_type:
+            content_type = guess_content_type(self)
+            metalog("guess_content_type(%s)=%s", self, content_type)
         self._updateprop("content-type", content_type)
 
     def _handle_xpra_quality_change(self):



Reply via email to