diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2005-07-08 10:03:38 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-07-08 10:03:38 (GMT) |
commit | ae0d3afcc39b13f01e0fbac74cf583f67a229382 (patch) | |
tree | 2017c0f3574ffb88453f650506e19efe896e8944 /ps/ps-document.c | |
parent | 2c3925fbeff020a1de5ed67a9625f9c5edc96944 (diff) |
Do not leak the target window
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
Diffstat (limited to 'ps/ps-document.c')
-rw-r--r-- | ps/ps-document.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/ps/ps-document.c b/ps/ps-document.c index d1c5271..8dca8cf 100644 --- a/ps/ps-document.c +++ b/ps/ps-document.c @@ -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); } |