[simple-scan/gnome-3-4: 9/25] Disconnect signals when objects are unreferenced
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [simple-scan/gnome-3-4: 9/25] Disconnect signals when objects are unreferenced
- Date: Thu, 27 Apr 2017 09:17:34 +0000 (UTC)
commit 2adf2e8153d44b191191456bd4c635cb915224a5
Author: Robert Ancell <robert ancell canonical com>
Date: Fri Mar 22 09:36:41 2013 +1300
Disconnect signals when objects are unreferenced
src/book-view.vala | 20 ++++++++++++++++++++
src/book.vala | 15 +++++++++++++++
src/page-view.vala | 9 +++++++++
src/ui.vala | 12 ++++++++++++
4 files changed, 56 insertions(+), 0 deletions(-)
---
diff --git a/src/book-view.vala b/src/book-view.vala
index 3acd14e..7c86d61 100644
--- a/src/book-view.vala
+++ b/src/book-view.vala
@@ -85,6 +85,23 @@ public class BookView : Gtk.VBox
drawing_area.show ();
}
+ ~BookView ()
+ {
+ book.page_added.disconnect (add_cb);
+ book.page_removed.disconnect (remove_cb);
+ book.reordered.disconnect (reorder_cb);
+ book.cleared.disconnect (clear_cb);
+ drawing_area.configure_event.disconnect (configure_cb);
+ drawing_area.draw.disconnect (draw_cb);
+ drawing_area.motion_notify_event.disconnect (motion_cb);
+ drawing_area.key_press_event.disconnect (key_cb);
+ drawing_area.button_press_event.disconnect (button_cb);
+ drawing_area.button_release_event.disconnect (button_cb);
+ drawing_area.focus_in_event.disconnect (focus_cb);
+ drawing_area.focus_out_event.disconnect (focus_cb);
+ adjustment.value_changed.disconnect (scroll_cb);
+ }
+
private PageView get_nth_page (int n)
{
Page page = book.get_page (n);
@@ -221,6 +238,9 @@ public class BookView : Gtk.VBox
selected_page = null;
}
+ var page_view = page_data.lookup (page);
+ page_view.changed.disconnect (page_view_changed_cb);
+ page_view.size_changed.disconnect (page_view_size_changed_cb);
page_data.remove (page);
select_page_view (new_selection);
diff --git a/src/book.vala b/src/book.vala
index 76a1901..21e488e 100644
--- a/src/book.vala
+++ b/src/book.vala
@@ -23,10 +23,25 @@ public class Book
public Book ()
{
+ pages = new List<Page> ();
+ }
+
+ ~Book ()
+ {
+ foreach (var page in pages)
+ {
+ page.pixels_changed.disconnect (page_changed_cb);
+ page.crop_changed.disconnect (page_changed_cb);
+ }
}
public void clear ()
{
+ foreach (var page in pages)
+ {
+ page.pixels_changed.disconnect (page_changed_cb);
+ page.crop_changed.disconnect (page_changed_cb);
+ }
pages = null;
cleared ();
}
diff --git a/src/page-view.vala b/src/page-view.vala
index 97bcaf0..245dbac 100644
--- a/src/page-view.vala
+++ b/src/page-view.vala
@@ -80,6 +80,15 @@ public class PageView
page.scan_direction_changed.connect (scan_direction_changed_cb);
}
+ ~PageView ()
+ {
+ page.pixels_changed.disconnect (page_pixels_changed_cb);
+ page.size_changed.disconnect (page_size_changed_cb);
+ page.crop_changed.disconnect (page_overlay_changed_cb);
+ page.scan_line_changed.disconnect (page_overlay_changed_cb);
+ page.scan_direction_changed.disconnect (scan_direction_changed_cb);
+ }
+
public Page get_page ()
{
return page;
diff --git a/src/ui.vala b/src/ui.vala
index db19d77..5443aa9 100644
--- a/src/ui.vala
+++ b/src/ui.vala
@@ -101,6 +101,12 @@ public class SimpleScan
load ();
}
+ ~UserInterface ()
+ {
+ book.page_removed.disconnect (page_removed_cb);
+ book.page_added.disconnect (page_added_cb);
+ }
+
private bool find_scan_device (string device, out Gtk.TreeIter iter)
{
bool have_iter = false;
@@ -424,6 +430,7 @@ public class SimpleScan
settings.set_string ("save-directory", save_dialog.get_current_folder ());
+ file_type_view.get_selection ().changed.disconnect (on_file_type_changed);
save_dialog.destroy ();
save_dialog = null;
@@ -1044,6 +1051,8 @@ public class SimpleScan
{
warning ("Error printing: %s", e.message);
}
+
+ print.draw_page.disconnect (draw_page);
}
[CCode (cname = "G_MODULE_EXPORT help_contents_menuitem_activate_cb", instance_pos = -1)]
@@ -1197,6 +1206,9 @@ public class SimpleScan
private void page_removed_cb (Book book, Page page)
{
+ page.size_changed.disconnect (page_size_changed_cb);
+ page.scan_direction_changed.disconnect (page_scan_direction_changed_cb);
+
/* If this is the last page add a new blank one */
if (book.get_n_pages () == 1)
add_default_page ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]