screenshot: Return an error when operation is blocked

Right now _createScreenshot() returns a tuple that indicates failure
when a sender requests a screenshot operation before a previously
started operation finished.

However that doesn't work for the PickColor() method, as it uses a
different return type than the other methods.

Address this by returning an error instead, which works in any case;
arguably trying to start multiple operations in parallel is an error
by the caller more than it is a failed operation anyway.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1288
This commit is contained in:
Florian Müllner 2020-05-29 00:35:27 +02:00
parent 4099c446da
commit c8d91b2c30

View File

@ -30,7 +30,9 @@ var ScreenshotService = class {
let sender = invocation.get_sender(); let sender = invocation.get_sender();
if (this._screenShooter.has(sender) || lockedDown) { if (this._screenShooter.has(sender) || lockedDown) {
invocation.return_value(GLib.Variant.new('(bs)', [false, ''])); invocation.return_error_literal(
Gio.IOErrorEnum, Gio.IOErrorEnum.BUSY,
'There is an ongoing operation for this sender');
return null; return null;
} }