eog r4978 - in trunk: . src



Author: csaavedra
Date: Mon Feb  2 14:52:36 2009
New Revision: 4978
URL: http://svn.gnome.org/viewvc/eog?rev=4978&view=rev

Log:
2009-02-02  Claudio Saavedra  <csaavedra igalia com>

	* src/eog-jobs.c: (eog_job_thumbnail_run): Update
	to the changes below.
	* src/eog-thumbnail.c: (eog_thumbnail_add_frame),
	(eog_thumbnail_fit_to_size): Do not modify thumbnails in-place,
	return a new object instead.
	* src/eog-thumbnail.h: Update headers.
	Fixes bug #569855 (Joaquim Rocha)



Modified:
   trunk/ChangeLog
   trunk/src/eog-jobs.c
   trunk/src/eog-thumbnail.c
   trunk/src/eog-thumbnail.h

Modified: trunk/src/eog-jobs.c
==============================================================================
--- trunk/src/eog-jobs.c	(original)
+++ trunk/src/eog-jobs.c	Mon Feb  2 14:52:36 2009
@@ -194,6 +194,7 @@
 {
 	gchar *orig_width, *orig_height;
 	gint width, height;
+	GdkPixbuf *pixbuf;
 
 	g_return_if_fail (EOG_IS_JOB_THUMBNAIL (job));
 
@@ -213,8 +214,10 @@
 	orig_width = g_strdup (gdk_pixbuf_get_option (job->thumbnail, "tEXt::Thumb::Image::Width"));
 	orig_height = g_strdup (gdk_pixbuf_get_option (job->thumbnail, "tEXt::Thumb::Image::Height"));
 
-	eog_thumbnail_fit_to_size (&job->thumbnail, EOG_LIST_STORE_THUMB_SIZE);
-	eog_thumbnail_add_frame (&job->thumbnail);
+	pixbuf = eog_thumbnail_fit_to_size (job->thumbnail, EOG_LIST_STORE_THUMB_SIZE);
+	g_object_unref (job->thumbnail);
+	job->thumbnail = eog_thumbnail_add_frame (pixbuf);
+	g_object_unref (pixbuf);
 
 	if (orig_width) {
 		sscanf (orig_width, "%i", &width);

Modified: trunk/src/eog-thumbnail.c
==============================================================================
--- trunk/src/eog-thumbnail.c	(original)
+++ trunk/src/eog-thumbnail.c	Mon Feb  2 14:52:36 2009
@@ -390,15 +390,15 @@
         return result_pixbuf;
 }
 
-void
-eog_thumbnail_add_frame (GdkPixbuf **thumbnail)
+GdkPixbuf *
+eog_thumbnail_add_frame (GdkPixbuf *thumbnail)
 {
 	GdkPixbuf *result_pixbuf;
 	gint source_width, source_height;
 	gint dest_width, dest_height;
 
-	source_width  = gdk_pixbuf_get_width  (*thumbnail);
-	source_height = gdk_pixbuf_get_height (*thumbnail);
+	source_width  = gdk_pixbuf_get_width  (thumbnail);
+	source_height = gdk_pixbuf_get_height (thumbnail);
 
 	dest_width  = source_width  + 9;
 	dest_height = source_height + 9;
@@ -409,25 +409,23 @@
 							   dest_height,
 							   FALSE);
 
-	gdk_pixbuf_copy_area (*thumbnail,
+	gdk_pixbuf_copy_area (thumbnail,
 			      0, 0,
 			      source_width,
 			      source_height,
 			      result_pixbuf,
 			      3, 3);
 
-	g_object_unref (*thumbnail);
-
-	*thumbnail = result_pixbuf;
+	return result_pixbuf;
 }
 
-void
-eog_thumbnail_fit_to_size (GdkPixbuf **thumbnail, gint dimension)
+GdkPixbuf *
+eog_thumbnail_fit_to_size (GdkPixbuf *thumbnail, gint dimension)
 {
 	gint width, height;
 
-	width = gdk_pixbuf_get_width (*thumbnail);
-	height = gdk_pixbuf_get_height (*thumbnail);
+	width = gdk_pixbuf_get_width (thumbnail);
+	height = gdk_pixbuf_get_height (thumbnail);
 
 	if (width > dimension || height > dimension) {
 		GdkPixbuf *result_pixbuf;
@@ -442,12 +440,11 @@
 		width  = MAX (width  * factor, 1);
 		height = MAX (height * factor, 1);
 
-		result_pixbuf = gnome_desktop_thumbnail_scale_down_pixbuf (*thumbnail, width, height);
-
-		g_object_unref (*thumbnail);
+		result_pixbuf = gnome_desktop_thumbnail_scale_down_pixbuf (thumbnail, width, height);
 
-		*thumbnail = result_pixbuf;
+		return result_pixbuf;
 	}
+	return gdk_pixbuf_copy (thumbnail);
 }
 
 GdkPixbuf*

Modified: trunk/src/eog-thumbnail.h
==============================================================================
--- trunk/src/eog-thumbnail.h	(original)
+++ trunk/src/eog-thumbnail.h	Mon Feb  2 14:52:36 2009
@@ -32,10 +32,10 @@
 
 void          eog_thumbnail_init        (void);
 
-void          eog_thumbnail_fit_to_size (GdkPixbuf **thumbnail,
+GdkPixbuf*    eog_thumbnail_fit_to_size (GdkPixbuf *thumbnail,
 					 gint        dimension);
 
-void	      eog_thumbnail_add_frame   (GdkPixbuf **thumbnail);
+GdkPixbuf*    eog_thumbnail_add_frame   (GdkPixbuf *thumbnail);
 
 GdkPixbuf*    eog_thumbnail_load        (EogImage *image,
 					 GError **error);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]