Package: gnome-sound-recorder Version: 3.38.0-1 Severity: grave Tags: patch Justification: causes non-serious data loss X-Debbugs-Cc: rasters...@gmail.com
Dear Maintainer, After doing a recording, pressing the "export" button shows, as expected, a file dialog to choose where to export the file. The problem is that the dialog disappears sudendly after some seconds (a variable number: sometimes as soon as three-four seconds, others between ten and twelve seconds). To trigger this bug, just press the "export" button and wait. This is critical because if the user want to navigate to a folder and uses too much time, the dialog closes before being able to do the operation. This seems a problem with the garbage collector. I attach a patch that fixes it. -- System Information: Debian Release: bullseye/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.9.0-2-amd64 (SMP w/4 CPU threads) Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=es_ES.UTF-8, LC_CTYPE=es_ES.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages gnome-sound-recorder depends on: ii dconf-gsettings-backend [gsettings-backend] 0.38.0-1 ii gir1.2-gdkpixbuf-2.0 2.40.0+dfsg-5 ii gir1.2-glib-2.0 1.66.1-1 ii gir1.2-gst-plugins-bad-1.0 1.18.1-1 ii gir1.2-gst-plugins-base-1.0 1.18.1-1 ii gir1.2-gstreamer-1.0 1.18.1-1 ii gir1.2-gtk-3.0 3.24.23-2 ii gir1.2-handy-1 1.0.1-1 ii gir1.2-pango-1.0 1.46.2-3 ii gjs 1.66.1-1 ii gstreamer1.0-plugins-base 1.18.1-1 ii gstreamer1.0-plugins-good 1.18.1-1 ii gstreamer1.0-pulseaudio 1.18.1-1 gnome-sound-recorder recommends no packages. gnome-sound-recorder suggests no packages. -- no debconf information
diff --git a/src/row.js b/src/row.js index 154c0ef..743de63 100644 --- a/src/row.js +++ b/src/row.js @@ -68,16 +68,17 @@ var Row = GObject.registerClass({ let exportAction = new Gio.SimpleAction({ name: 'export' }); exportAction.connect('activate', () => { const window = Gio.Application.get_default().get_active_window(); - const dialog = Gtk.FileChooserNative.new(_('Export Recording'), window, Gtk.FileChooserAction.SAVE, _('_Export'), _('_Cancel')); - dialog.set_current_name(`${this._recording.name}.${this._recording.extension}`); - dialog.connect('response', (_dialog, response) => { + this.exportDialog = Gtk.FileChooserNative.new(_('Export Recording'), window, Gtk.FileChooserAction.SAVE, _('_Export'), _('_Cancel')); + this.exportDialog.set_current_name(`${this._recording.name}.${this._recording.extension}`); + this.exportDialog.connect('response', (_dialog, response) => { if (response === Gtk.ResponseType.ACCEPT) { - const dest = dialog.get_file(); + const dest = this.exportDialog.get_file(); this._recording.save(dest); } - dialog.destroy(); + this.exportDialog.destroy(); + this.exportDialog = null; }); - dialog.show(); + this.exportDialog.show(); }); this.actionGroup.add_action(exportAction);