aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-11-19 15:38:56 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-11-19 15:38:56 +0000
commit88f9e0588abe38a52819b528f80227cb17483c80 (patch)
tree7171b01bfe91bf7a8bd85b35944afb0d0e71ec7c
parent5ec97a2ab3f759aa9419cec6ac2bd3f9b6f53f48 (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.c2
-rw-r--r--src/displaywindow.c1
-rw-r--r--src/gtk-valuegraph.c2
-rw-r--r--src/imagedisplay.c4
-rw-r--r--src/imagedisplay.h3
-rw-r--r--src/mrc.h26
-rw-r--r--src/prealign.c2
-rw-r--r--src/refine.c8
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 {
diff --git a/src/mrc.h b/src/mrc.h
index 6414dfe..6a66142 100644
--- a/src/mrc.h
+++ b/src/mrc.h
@@ -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);