[Rawstudio-commit] r3213 - in trunk: librawstudio src

Anders Brander anders at brander.dk
Sat Feb 13 17:14:17 CET 2010


Author: abrander
Date: 2010-02-13 17:14:17 +0100 (Sat, 13 Feb 2010)
New Revision: 3213

Modified:
   trunk/librawstudio/rs-profile-camera.h
   trunk/src/rs-toolbox.c
Log:
Stop leaking in rs_toolbox_set_photo().

Modified: trunk/librawstudio/rs-profile-camera.h
===================================================================
--- trunk/librawstudio/rs-profile-camera.h	2010-02-13 15:20:06 UTC (rev 3212)
+++ trunk/librawstudio/rs-profile-camera.h	2010-02-13 16:14:17 UTC (rev 3213)
@@ -23,7 +23,7 @@
 typedef struct {
 	gchar *make;
 	gchar *model;
-	gchar *unique_id;
+	const gchar *unique_id;
 } rs_profile_camera;
 
 const gchar * rs_profile_camera_find(gchar *make, gchar *model);

Modified: trunk/src/rs-toolbox.c
===================================================================
--- trunk/src/rs-toolbox.c	2010-02-13 15:20:06 UTC (rev 3212)
+++ trunk/src/rs-toolbox.c	2010-02-13 16:14:17 UTC (rev 3213)
@@ -92,7 +92,7 @@
 	GtkWidget *histogram;
 	RS_IMAGE16 *histogram_dataset;
 
-	rs_profile_camera *last_camera;
+	rs_profile_camera last_camera;
 
  #ifndef WIN32
 	guint histogram_connection; /* Got GConf notification */
@@ -143,6 +143,9 @@
 	g_object_unref(toolbox->gconf);
 #endif
 
+	g_free(toolbox->last_camera.make);
+	g_free(toolbox->last_camera.model);
+
 	if (G_OBJECT_CLASS (rs_toolbox_parent_class)->finalize)
 		G_OBJECT_CLASS (rs_toolbox_parent_class)->finalize (object);
 }
@@ -239,9 +242,6 @@
 
 	self->mute_from_sliders = FALSE;
 	self->mute_from_photo = FALSE;
-
-	/* Allocate space for last used camera (profile) */
-	self->last_camera = g_new(rs_profile_camera, 1);
 }
 
 static void
@@ -977,19 +977,19 @@
 		RSProfileFactory *factory = rs_profile_factory_new_default();
 		GtkTreeModelFilter *filter;
 
-		if (g_strcmp0(photo->metadata->make_ascii, toolbox->last_camera->make) != 0 || 
-		    g_strcmp0(photo->metadata->model_ascii, toolbox->last_camera->model) != 0)
+		if (g_strcmp0(photo->metadata->make_ascii, toolbox->last_camera.make) != 0 || 
+		    g_strcmp0(photo->metadata->model_ascii, toolbox->last_camera.model) != 0)
 		{
-			g_free(toolbox->last_camera);
-			toolbox->last_camera = g_new(rs_profile_camera, 1);
+			g_free(toolbox->last_camera.make);
+			g_free(toolbox->last_camera.model);
 
-			toolbox->last_camera->make = g_strdup(photo->metadata->make_ascii);
-			toolbox->last_camera->model = g_strdup(photo->metadata->model_ascii);
-			toolbox->last_camera->unique_id = g_strdup(rs_profile_camera_find(photo->metadata->make_ascii, photo->metadata->model_ascii));
+			toolbox->last_camera.make = g_strdup(photo->metadata->make_ascii);
+			toolbox->last_camera.model = g_strdup(photo->metadata->model_ascii);
+			toolbox->last_camera.unique_id = rs_profile_camera_find(photo->metadata->make_ascii, photo->metadata->model_ascii);
 		}
 
-		if (toolbox->last_camera->unique_id)
-			filter = rs_dcp_factory_get_compatible_as_model(factory, photo->metadata->make_ascii, toolbox->last_camera->unique_id);
+		if (toolbox->last_camera.unique_id)
+			filter = rs_dcp_factory_get_compatible_as_model(factory, photo->metadata->make_ascii, toolbox->last_camera.unique_id);
 		else
 			filter = rs_dcp_factory_get_compatible_as_model(factory, photo->metadata->make_ascii, photo->metadata->model_ascii);
 		rs_profile_selector_set_model_filter(toolbox->selector, filter);




More information about the Rawstudio-commit mailing list