From bfd30be2f006c427d3c1e4651cb5ea593f42f3a2 Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Wed, 4 Mar 2020 05:46:33 +0000 Subject: [PATCH] #2617 do save-graph IO in a separate thread git-svn-id: https://xpra.org/svn/Xpra/trunk@25486 3bb7dfac-3a0b-4e04-842a-767bc560f471 --- src/xpra/client/gtk_base/session_info.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/xpra/client/gtk_base/session_info.py b/src/xpra/client/gtk_base/session_info.py index 55c2bf3259..78dcc561e9 100644 --- a/src/xpra/client/gtk_base/session_info.py +++ b/src/xpra/client/gtk_base/session_info.py @@ -1198,8 +1198,14 @@ def save_graph(self, _ebox, btn, graph): filename = filenames[0] surface = graph.surface log("saving surface %s to %s", surface, filename) - with open(filename, "wb") as f: - surface.write_to_png(f) + from io import BytesIO + b = BytesIO() + surface.write_to_png(b) + def save_file(): + with open(filename, "wb") as f: + f.write(b.getvalue()) + from xpra.make_thread import start_thread + start_thread(save_file, "save-graph") elif response in (Gtk.ResponseType.CANCEL, Gtk.ResponseType.CLOSE, Gtk.ResponseType.DELETE_EVENT): log("closed/cancelled") else: