]> www.fi.muni.cz Git - evince.git/commitdiff
Do not leak the target window
authorMarco Pesenti Gritti <mpg@redhat.com>
Fri, 8 Jul 2005 10:03:38 +0000 (10:03 +0000)
committerMarco Pesenti Gritti <marco@src.gnome.org>
Fri, 8 Jul 2005 10:03:38 +0000 (10:03 +0000)
2005-07-08  Marco Pesenti Gritti  <mpg@redhat.com>

        * ps/ps-document.c: (ps_document_dispose),
        (ps_async_renderer_render_pixbuf):
        * ps/ps-document.h:

        Do not leak the target window

ChangeLog
ps/ps-document.c
ps/ps-document.h

index ae053b5d59e9fb021673cce02836c21da4d6f471..aa1a2d547b3f515f5f098f6483422f7a50079a33 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-07-08  Marco Pesenti Gritti  <mpg@redhat.com>
+
+       * ps/ps-document.c: (ps_document_dispose),
+       (ps_async_renderer_render_pixbuf):
+       * ps/ps-document.h:
+
+       Do not leak the target window
+
 2005-07-08  Marco Pesenti Gritti  <mpg@redhat.com>
 
        * shell/ev-application.c: (ev_application_init):
index d1c5271bc39e9c1b3c7caf5ada53f4e93bc38b49..8dca8cf663c0e3a31cabe54dc37ecfaa86a439bb 100644 (file)
@@ -178,6 +178,12 @@ ps_document_dispose (GObject *object)
                gs->input_buffer = NULL;
        }
 
+       if (gs->target_window) {
+               gtk_widget_destroy (gs->target_window);
+               gs->target_window = NULL;
+               gs->pstarget = NULL;
+       }
+
        stop_interpreter (gs);
 
        G_OBJECT_CLASS (parent_class)->dispose (object);
@@ -1197,15 +1203,13 @@ ps_async_renderer_render_pixbuf (EvAsyncRenderer *renderer, int page, double sca
        PSDocument *gs = PS_DOCUMENT (renderer);
 
        if (gs->pstarget == NULL) {
-               GtkWidget *widget;
-
-               widget = gtk_window_new (GTK_WINDOW_POPUP);
-               gtk_widget_realize (widget);
-               gs->pstarget = widget->window;
+               gs->target_window = gtk_window_new (GTK_WINDOW_POPUP);
+               gtk_widget_realize (gs->target_window);
+               gs->pstarget = gs->target_window->window;
 
                g_assert (gs->pstarget != NULL);
 
-               g_signal_connect (widget, "event",
+               g_signal_connect (gs->target_window, "event",
                                  G_CALLBACK (ps_document_widget_event),
                                  gs);
        }
index 87eaddb9501c6f5b4192053ae036f42dd8e6e340..7ecad2918bab6351f2f3f1106af0fec8cb7a2973 100644 (file)
@@ -25,6 +25,7 @@
 #define __PS_DOCUMENT_H__
 
 #include <sys/types.h>
+#include <gtk/gtkwidget.h>
 
 #include "ev-document.h"
 #include "ps.h"
@@ -43,6 +44,7 @@ typedef struct _PSDocumentClass PSDocumentClass;
 struct _PSDocument {
   GObject object;
 
+  GtkWidget *target_window;
   GdkWindow *pstarget;
   GdkPixmap *bpixmap;
   long message_window;          /* Used by ghostview to receive messages from app */