[Goodies-commits] r3365 - in ristretto/trunk: po src

Stephan Arts stephan at xfce.org
Fri Oct 12 19:53:24 CEST 2007


Author: stephan
Date: 2007-10-12 17:53:23 +0000 (Fri, 12 Oct 2007)
New Revision: 3365

Modified:
   ristretto/trunk/po/Makefile.in.in
   ristretto/trunk/src/navigator.c
   ristretto/trunk/src/navigator.h
   ristretto/trunk/src/picture_viewer.c
Log:
Fix rendering issue with picture viewer
Fix EXIF rotation
Fix memory leak


Modified: ristretto/trunk/po/Makefile.in.in
===================================================================
--- ristretto/trunk/po/Makefile.in.in	2007-10-11 18:44:43 UTC (rev 3364)
+++ ristretto/trunk/po/Makefile.in.in	2007-10-12 17:53:23 UTC (rev 3365)
@@ -134,7 +134,7 @@
 dvi info tags TAGS ID:
 
 # Define this as empty until I found a useful application.
-install-exec installcheck:
+installcheck:
 
 uninstall:
 	linguas="$(USE_LINGUAS)"; \

Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2007-10-11 18:44:43 UTC (rev 3364)
+++ ristretto/trunk/src/navigator.c	2007-10-12 17:53:23 UTC (rev 3365)
@@ -39,9 +39,6 @@
 static gint
 rstto_navigator_entry_name_compare_func(RsttoNavigatorEntry *a, RsttoNavigatorEntry *b);
 
-static void
-rstto_navigator_entry_free_pixbuf (RsttoNavigatorEntry *entry);
-
 enum
 {
     RSTTO_NAVIGATOR_SIGNAL_ENTRY_MODIFIED = 0,
@@ -55,7 +52,6 @@
 {
     ThunarVfsInfo       *info;
     GdkPixbuf           *thumb;
-    GdkPixbuf           *pixbuf;
     gdouble              scale;
     gboolean             fit_to_screen;
     ExifData            *exif_data;
@@ -199,7 +195,6 @@
     if(navigator->file_iter)
     {
         navigator->old_position = rstto_navigator_get_position(navigator);
-        rstto_navigator_entry_free_pixbuf(navigator->file_iter->data);
     }
     navigator->file_iter = g_list_first(navigator->file_list);
     if(navigator->file_iter)
@@ -214,7 +209,6 @@
     if(navigator->file_iter)
     {
         navigator->old_position = rstto_navigator_get_position(navigator);
-        rstto_navigator_entry_free_pixbuf(navigator->file_iter->data);
         navigator->file_iter = g_list_next(navigator->file_iter);
     }
     if(!navigator->file_iter)
@@ -247,7 +241,6 @@
     if(navigator->file_iter)
     {
         navigator->old_position = rstto_navigator_get_position(navigator);
-        rstto_navigator_entry_free_pixbuf(navigator->file_iter->data);
         navigator->file_iter = g_list_previous(navigator->file_iter);
     }
     if(!navigator->file_iter)
@@ -270,7 +263,6 @@
     if(navigator->file_iter)
     {
         navigator->old_position = rstto_navigator_get_position(navigator);
-        rstto_navigator_entry_free_pixbuf(navigator->file_iter->data);
     }
     navigator->file_iter = g_list_last(navigator->file_list);
 
@@ -340,11 +332,6 @@
 gint
 rstto_navigator_add (RsttoNavigator *navigator, RsttoNavigatorEntry *entry)
 {
-    if(navigator->file_iter)
-    {
-        rstto_navigator_entry_free_pixbuf(navigator->file_iter->data);
-    }
-
     navigator->file_list = g_list_insert_sorted(navigator->file_list, entry, navigator->compare_func);
     if (!navigator->file_iter)
     {
@@ -368,7 +355,6 @@
         if(navigator->file_iter->data == entry)
         {
             navigator->old_position = rstto_navigator_get_position(navigator);
-            rstto_navigator_entry_free_pixbuf(navigator->file_iter->data);
             navigator->file_iter = g_list_next(navigator->file_iter);
             if(!navigator->file_iter)
                 navigator->file_iter = g_list_first(navigator->file_list);
@@ -431,7 +417,6 @@
     if(navigator->file_iter)
     {
         navigator->old_position = rstto_navigator_get_position(navigator);
-        rstto_navigator_entry_free_pixbuf(navigator->file_iter->data);
     }
     navigator->file_iter = g_list_nth(navigator->file_list, n);
     if(navigator->file_iter)
@@ -588,10 +573,6 @@
 void
 rstto_navigator_entry_free(RsttoNavigatorEntry *nav_entry)
 {
-    if(nav_entry->pixbuf)
-    {
-        g_object_unref(nav_entry->pixbuf);
-    }
     if(nav_entry->thumb)
     {
         g_object_unref(nav_entry->thumb);
@@ -643,51 +624,6 @@
     return entry->thumb;
 }
 
-GdkPixbuf *
-rstto_navigator_entry_get_pixbuf(RsttoNavigatorEntry *entry)
-{
-    g_return_val_if_fail(entry, NULL);
-
-    if(!entry->pixbuf)
-    {
-        gchar *filename = thunar_vfs_path_dup_string(entry->info->path);
-        GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
-        if (pixbuf)
-        {
-            entry->pixbuf = gdk_pixbuf_rotate_simple(pixbuf, entry->rotation);
-            gdk_pixbuf_unref(pixbuf);
-            if (entry->v_flipped)
-            {
-                pixbuf = entry->pixbuf;
-                entry->pixbuf = gdk_pixbuf_flip(pixbuf, FALSE);
-                gdk_pixbuf_unref(pixbuf);
-            }
-            if (entry->v_flipped)
-            {
-                pixbuf = entry->pixbuf;
-                entry->pixbuf = gdk_pixbuf_flip(pixbuf, TRUE);
-                gdk_pixbuf_unref(pixbuf);
-            }
-        }
-        else
-        {
-            entry->pixbuf = NULL;
-        }
-        g_free(filename);
-    }
-    return entry->pixbuf;
-}
-
-static void
-rstto_navigator_entry_free_pixbuf (RsttoNavigatorEntry *entry)
-{
-    if(entry->pixbuf)
-    {
-        g_object_unref(entry->pixbuf);
-        entry->pixbuf = NULL;
-    }
-}
-
 gint
 rstto_navigator_get_old_position (RsttoNavigator *navigator)
 {

Modified: ristretto/trunk/src/navigator.h
===================================================================
--- ristretto/trunk/src/navigator.h	2007-10-11 18:44:43 UTC (rev 3364)
+++ ristretto/trunk/src/navigator.h	2007-10-12 17:53:23 UTC (rev 3365)
@@ -112,8 +112,6 @@
 rstto_navigator_entry_new (ThunarVfsInfo *info);
 void
 rstto_navigator_entry_free(RsttoNavigatorEntry *nav_entry);
-GdkPixbuf *
-rstto_navigator_entry_get_pixbuf (RsttoNavigatorEntry *entry);
 ThunarVfsInfo *
 rstto_navigator_entry_get_info (RsttoNavigatorEntry *entry);
 gboolean

Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-10-11 18:44:43 UTC (rev 3364)
+++ ristretto/trunk/src/picture_viewer.c	2007-10-12 17:53:23 UTC (rev 3365)
@@ -663,26 +663,45 @@
 static gboolean
 cb_rstto_picture_viewer_update_image(RsttoPictureViewer *viewer)
 {
-    gdk_pixbuf_animation_iter_advance(viewer->priv->iter, NULL);
-    if (viewer->priv->src_pixbuf)
-        gdk_pixbuf_unref(viewer->priv->src_pixbuf);
-    viewer->priv->src_pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(viewer->priv->iter);
-    
-    if (viewer->priv->src_pixbuf)
+    if(gdk_pixbuf_animation_iter_advance(viewer->priv->iter, NULL))
     {
-        gdk_pixbuf_ref(viewer->priv->src_pixbuf);
-    }
+        GdkPixbuf *src_pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(viewer->priv->iter);
+        
+        if (src_pixbuf)
+        {
+            RsttoNavigatorEntry *entry = rstto_navigator_get_file(viewer->priv->navigator);
+            if (viewer->priv->src_pixbuf)
+                gdk_pixbuf_unref(viewer->priv->src_pixbuf);
+            viewer->priv->src_pixbuf = gdk_pixbuf_rotate_simple(src_pixbuf, rstto_navigator_entry_get_rotation(entry));
+            gdk_pixbuf_unref(src_pixbuf);
 
-    rstto_picture_viewer_refresh(viewer);
-    rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+            if (rstto_navigator_entry_get_flip(entry, FALSE))
+            {
+                src_pixbuf = viewer->priv->src_pixbuf;
+                viewer->priv->src_pixbuf = gdk_pixbuf_flip(src_pixbuf, FALSE);
+                gdk_pixbuf_unref(src_pixbuf);
+            }
 
-    gint time = gdk_pixbuf_animation_iter_get_delay_time(viewer->priv->iter);
-    if (time != -1)
-    {
-        viewer->priv->timeout_id = g_timeout_add(time, (GSourceFunc)cb_rstto_picture_viewer_update_image, viewer);
+            if (rstto_navigator_entry_get_flip(entry, TRUE))
+            {
+                src_pixbuf = viewer->priv->src_pixbuf;
+                viewer->priv->src_pixbuf = gdk_pixbuf_flip(src_pixbuf, TRUE);
+                gdk_pixbuf_unref(src_pixbuf);
+            }
+        }
+
+        rstto_picture_viewer_refresh(viewer);
+        rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+
+        gint time = gdk_pixbuf_animation_iter_get_delay_time(viewer->priv->iter);
+        if (time != -1)
+        {
+            viewer->priv->timeout_id = g_timeout_add(time, (GSourceFunc)cb_rstto_picture_viewer_update_image, viewer);
+        }
+    
+        return FALSE;
     }
-    
-    return FALSE;
+    return TRUE;
 }
 
 static void
@@ -716,23 +735,20 @@
         g_io_channel_set_encoding(viewer->priv->io_channel, NULL, NULL);
         g_io_add_watch(viewer->priv->io_channel, G_IO_IN | G_IO_PRI, (GIOFunc)cb_rstto_picture_viewer_read_file, viewer);
     }
-    else
+    if (viewer->priv->src_pixbuf)
     {
-        if (viewer->priv->src_pixbuf)
-        {
-            g_object_unref(viewer->priv->src_pixbuf);
-            viewer->priv->src_pixbuf = NULL;
-        }
-        if (viewer->priv->dst_pixbuf)
-        {
-            g_object_unref(viewer->priv->dst_pixbuf);
-            viewer->priv->dst_pixbuf = NULL;
-        }
-        if (GTK_WIDGET_REALIZED(widget))
-        {
-            rstto_picture_viewer_paint(GTK_WIDGET(viewer));
-        }
+        g_object_unref(viewer->priv->src_pixbuf);
+        viewer->priv->src_pixbuf = NULL;
     }
+    if (viewer->priv->dst_pixbuf)
+    {
+        g_object_unref(viewer->priv->dst_pixbuf);
+        viewer->priv->dst_pixbuf = NULL;
+    }
+    if (GTK_WIDGET_REALIZED(widget))
+    {
+        rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+    }
 }
 
 static void
@@ -824,7 +840,7 @@
     viewer->priv->iter = gdk_pixbuf_animation_get_iter(viewer->priv->animation, NULL);
     if (viewer->priv->src_pixbuf)
         gdk_pixbuf_unref(viewer->priv->src_pixbuf);
-    viewer->priv->src_pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(viewer->priv->iter);
+    viewer->priv->src_pixbuf = NULL;
 
     gint time = gdk_pixbuf_animation_iter_get_delay_time(viewer->priv->iter);
 




More information about the Goodies-commits mailing list