diff options
author | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-11-19 15:38:56 +0000 |
---|---|---|
committer | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-11-19 15:38:56 +0000 |
commit | 88f9e0588abe38a52819b528f80227cb17483c80 (patch) | |
tree | 7171b01bfe91bf7a8bd85b35944afb0d0e71ec7c | |
parent | 5ec97a2ab3f759aa9419cec6ac2bd3f9b6f53f48 (diff) |
Fix memory leaks and other memory problems
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@197 bf6ca9ba-c028-0410-8290-897cf20841d1
-rw-r--r-- | src/cache.c | 2 | ||||
-rw-r--r-- | src/displaywindow.c | 1 | ||||
-rw-r--r-- | src/gtk-valuegraph.c | 2 | ||||
-rw-r--r-- | src/imagedisplay.c | 4 | ||||
-rw-r--r-- | src/imagedisplay.h | 3 | ||||
-rw-r--r-- | src/mrc.h | 26 | ||||
-rw-r--r-- | src/prealign.c | 2 | ||||
-rw-r--r-- | src/refine.c | 8 |
8 files changed, 29 insertions, 19 deletions
diff --git a/src/cache.c b/src/cache.c index 8f05e05..f7e6b7f 100644 --- a/src/cache.c +++ b/src/cache.c @@ -129,6 +129,7 @@ int cache_load(ImageList *images, const char *filename) { if ( fread(index, index_size, 1, fh) != 1 ) { fprintf(stderr, "Couldn't read index.\n"); fclose(fh); + free(index); return -1; } @@ -179,6 +180,7 @@ int cache_load(ImageList *images, const char *filename) { } fclose(fh); + free(index); return 0; } diff --git a/src/displaywindow.c b/src/displaywindow.c index 324b921..0eed64c 100644 --- a/src/displaywindow.c +++ b/src/displaywindow.c @@ -874,6 +874,7 @@ static void displaywindow_gl_free_resources(DisplayWindow *dw) { if ( dw->gl_use_buffers ) { glDeleteBuffersARB(1, &dw->gl_ref_vertex_buffer); + glDeleteBuffersARB(1, &dw->gl_ref_normal_buffer); glDeleteBuffersARB(1, &dw->gl_marker_vertex_buffer); glDeleteBuffersARB(1, &dw->gl_marker_normal_buffer); glDeleteBuffersARB(1, &dw->gl_gen_vertex_buffer); diff --git a/src/gtk-valuegraph.c b/src/gtk-valuegraph.c index 555cec9..e0bc112 100644 --- a/src/gtk-valuegraph.c +++ b/src/gtk-valuegraph.c @@ -179,6 +179,8 @@ static gint gtk_value_graph_draw(GtkWidget *graph, GdkEventExpose *event, gpoint cairo_set_source_rgb(cr, 0.0, 0.0, 1.0); cairo_stroke(cr); + cairo_destroy(cr); + return 0; } diff --git a/src/imagedisplay.c b/src/imagedisplay.c index 8714722..8e1858e 100644 --- a/src/imagedisplay.c +++ b/src/imagedisplay.c @@ -147,6 +147,10 @@ static void imagedisplay_destroyed(GtkWidget *widget, ImageDisplay *imagedisplay g_object_unref(G_OBJECT(imagedisplay->gc_tiltaxis)); g_object_unref(G_OBJECT(imagedisplay->gc_marks_1)); g_object_unref(G_OBJECT(imagedisplay->gc_marks_2)); + + if ( imagedisplay->flags & IMAGEDISPLAY_FREE ) { + free(imagedisplay->imagerecord.image); + } free(imagedisplay); diff --git a/src/imagedisplay.h b/src/imagedisplay.h index d404bcb..7b16dc2 100644 --- a/src/imagedisplay.h +++ b/src/imagedisplay.h @@ -25,7 +25,8 @@ typedef enum { IMAGEDISPLAY_NONE = 0, IMAGEDISPLAY_SHOW_CENTRE = 1<<1, IMAGEDISPLAY_SHOW_TILT_AXIS = 1<<2, - IMAGEDISPLAY_QUIT_IF_CLOSED = 1<<3 + IMAGEDISPLAY_QUIT_IF_CLOSED = 1<<3, + IMAGEDISPLAY_FREE = 1<<4 } ImageDisplayFlags; typedef enum { @@ -45,27 +45,27 @@ typedef struct struct_mrcheader { float amin; float amax; float amean; - uint16_t ispg; /* Space group number */ - uint16_t nsymbt; + uint16_t ispg; /* Space group number */ + uint16_t nsymbt; int32_t next; - uint16_t dvid; + uint16_t dvid; char extra[30]; - uint16_t numintegers; - uint16_t numfloats; - uint16_t sub; - uint16_t zfac; + uint16_t numintegers; + uint16_t numfloats; + uint16_t sub; + uint16_t zfac; float min2; float max2; float min3; float max3; float min4; float max4; - uint16_t idtype; - uint16_t lens; - uint16_t nd1; - uint16_t nd2; - uint16_t vd1; - uint16_t vd2; + uint16_t idtype; + uint16_t lens; + uint16_t nd1; + uint16_t nd2; + uint16_t vd1; + uint16_t vd2; float tiltangles[9]; float zorg; float xorg; diff --git a/src/prealign.c b/src/prealign.c index 09785d2..9aaa72b 100644 --- a/src/prealign.c +++ b/src/prealign.c @@ -173,7 +173,7 @@ void prealign_sum_stack(ImageList *list, int have_centres) { total_record.image = image_total; total_record.width = twidth; total_record.height = theight; - sum_id = imagedisplay_open(total_record, "Sum of All Images", IMAGEDISPLAY_SHOW_CENTRE | IMAGEDISPLAY_SHOW_TILT_AXIS); + sum_id = imagedisplay_open(total_record, "Sum of All Images", IMAGEDISPLAY_SHOW_CENTRE | IMAGEDISPLAY_SHOW_TILT_AXIS | IMAGEDISPLAY_FREE); } diff --git a/src/refine.c b/src/refine.c index 85573b6..b68220b 100644 --- a/src/refine.c +++ b/src/refine.c @@ -346,11 +346,11 @@ static int refine_sequence_sweep(ControlContext *ctx, double *fit, double *warp) series_dev_n++; image_feature_list_free(rflist); - + } else { - + /* Even-numbered images: fit */ - refine_fit_image(ctx->cell, &ctx->images->images[ctx->reproject_cur_image], ctx->cell_lattice); + refine_fit_image(ctx->cell, &ctx->images->images[i], ctx->cell_lattice); displaywindow_update(ctx->dw); } @@ -408,7 +408,7 @@ static gint refine_sequence(GtkWidget *step_button, ControlContext *ctx) { ctx->images->images[i].omega -= omega_offs; } memcpy(ctx->cell, &cell_copy, sizeof(Basis)); - + } window_fit = gtk_window_new(GTK_WINDOW_TOPLEVEL); |