From 29c8dda6046a5038a4d894ca2581199f217cf750 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 07 Feb 2005 22:09:43 +0000 Subject: Solve more refs issues. 2005-02-07 Marco Pesenti Gritti * shell/ev-page-view.c: (ev_page_view_dispose): * shell/ev-view.c: (ev_view_finalize): * shell/ev-window.c: (ev_window_setup_document), (ev_window_dispose), (ev_window_init): Solve more refs issues. I commented out the page_view initialization for now: it was never destroyed (because it's never added to a container). Because of that we was leaking gs processes. Couldnt think to a clean fix. We need to figure this out, password view has the same issue probably. --- (limited to 'shell') diff --git a/shell/ev-page-view.c b/shell/ev-page-view.c index 4b019c4..1735952 100644 --- a/shell/ev-page-view.c +++ b/shell/ev-page-view.c @@ -21,6 +21,7 @@ #include "ev-page-view.h" #include "ev-marshal.h" #include "ev-document-misc.h" +#include "ev-debug.h" #include /* We keep a cached array of all the page sizes. The info is accessed via @@ -102,6 +103,8 @@ ev_page_view_dispose (GObject *object) { EvPageView *view = EV_PAGE_VIEW (object); + LOG ("dispose") + if (view->priv->document) { g_object_unref (view->priv->document); view->priv->document = NULL; diff --git a/shell/ev-view.c b/shell/ev-view.c index d4fa6a2..51c7bb2 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -183,6 +183,8 @@ ev_view_finalize (GObject *object) { EvView *view = EV_VIEW (object); + LOG ("Finalize") + if (view->document) g_object_unref (view->document); diff --git a/shell/ev-window.c b/shell/ev-window.c index 875e271..84206b7 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -390,7 +390,7 @@ ev_window_setup_document (EvWindow *ev_window) { EvDocument *document; EvView *view = EV_VIEW (ev_window->priv->view); - EvPageView *page_view = EV_PAGE_VIEW (ev_window->priv->page_view); + //EvPageView *page_view = EV_PAGE_VIEW (ev_window->priv->page_view); EvSidebar *sidebar = EV_SIDEBAR (ev_window->priv->sidebar); document = ev_window->priv->document; @@ -404,7 +404,7 @@ ev_window_setup_document (EvWindow *ev_window) ev_sidebar_set_document (sidebar, document); ev_view_set_document (view, document); - ev_page_view_set_document (page_view, document); + //ev_page_view_set_document (page_view, document); update_window_title (document, NULL, ev_window); update_total_pages (ev_window); @@ -1472,7 +1472,17 @@ ev_window_dispose (GObject *object) g_object_unref (priv->document); priv->document = NULL; } - + + if (priv->view) { + g_object_unref (priv->view); + priv->view = NULL; + } + + if (priv->page_view) { + g_object_unref (priv->page_view); + priv->page_view = NULL; + } + if (priv->password_document) { g_object_unref (priv->password_document); priv->password_document = NULL; @@ -1843,19 +1853,19 @@ ev_window_init (EvWindow *ev_window) ev_window->priv->scrolled_window); ev_window->priv->view = ev_view_new (); - ev_window->priv->page_view = ev_page_view_new (); + //ev_window->priv->page_view = ev_page_view_new (); ev_window->priv->password_view = ev_password_view_new (); g_signal_connect_swapped (ev_window->priv->password_view, "unlock", G_CALLBACK (ev_window_popup_password_dialog), ev_window); gtk_widget_show (ev_window->priv->view); - gtk_widget_show (ev_window->priv->page_view); + //gtk_widget_show (ev_window->priv->page_view); gtk_widget_show (ev_window->priv->password_view); /* We own a ref on these widgets, as we can swap them in and out */ g_object_ref (ev_window->priv->view); - g_object_ref (ev_window->priv->page_view); + //g_object_ref (ev_window->priv->page_view); g_object_ref (ev_window->priv->password_view); gtk_container_add (GTK_CONTAINER (ev_window->priv->scrolled_window), -- cgit v0.9.1