[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