aboutsummaryrefslogtreecommitdiff
path: root/libdino
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-10-05 17:12:40 +0200
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-10-09 16:38:03 +0200
commit1159a169b0296813ba6a80f973bacbedaf02f1ef (patch)
tree109b7dafa10c7ab5d6d71bb7eb8fb32a388ea6e0 /libdino
parent9214e31b98d69d2c8ad56f8634345aeb98b234cc (diff)
Inhibit suspend on file upload/download
Diffstat (limited to 'libdino')
-rw-r--r--libdino/src/application.vala2
-rw-r--r--libdino/src/service/file_manager.vala4
2 files changed, 6 insertions, 0 deletions
diff --git a/libdino/src/application.vala b/libdino/src/application.vala
index 048a88ff..1c0368f8 100644
--- a/libdino/src/application.vala
+++ b/libdino/src/application.vala
@@ -15,6 +15,8 @@ public interface Application : GLib.Application {
public abstract StreamInteractor stream_interactor { get; set; }
public abstract Plugins.Registry plugin_registry { get; set; }
public abstract SearchPathGenerator? search_path_generator { get; set; }
+ public abstract uint inhibit_app(string reason);
+ public abstract void uninhibit_app(uint cookie);
internal static string print_xmpp;
diff --git a/libdino/src/service/file_manager.vala b/libdino/src/service/file_manager.vala
index f5096df7..090c9595 100644
--- a/libdino/src/service/file_manager.vala
+++ b/libdino/src/service/file_manager.vala
@@ -250,6 +250,9 @@ public class FileManager : StreamInteractionModule, Object {
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
file_transfer.cancellable.reset();
+
+ uint inhibit_cookie = Application.get_default()
+ .inhibit_app("Ongoing file download");
uint8[] buffer = new uint8[1024];
ssize_t read;
while ((read = yield input_stream.read_async(buffer, Priority.LOW, file_transfer.cancellable)) > 0) {
@@ -259,6 +262,7 @@ public class FileManager : StreamInteractionModule, Object {
buffer.length = 1024;
}
yield input_stream.close_async(Priority.LOW, file_transfer.cancellable);
+ Application.get_default().uninhibit_app(inhibit_cookie);
yield os.close_async(Priority.LOW, file_transfer.cancellable);
file_transfer.path = file.get_basename();
file_transfer.input_stream = yield file.read_async();