[Goodies-commits] r3317 - ristretto/trunk/src
Stephan Arts
stephan at xfce.org
Mon Oct 8 23:28:51 CEST 2007
Author: stephan
Date: 2007-10-08 21:28:51 +0000 (Mon, 08 Oct 2007)
New Revision: 3317
Modified:
ristretto/trunk/src/picture_viewer.c
Log:
Fix picture viewer refresh
Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c 2007-10-08 09:19:26 UTC (rev 3316)
+++ ristretto/trunk/src/picture_viewer.c 2007-10-08 21:28:51 UTC (rev 3317)
@@ -29,6 +29,7 @@
GdkPixbufLoader *loader;
GdkPixbufAnimation *animation;
GdkPixbufAnimationIter *iter;
+ GIOChannel *io_channel;
GdkPixbuf *src_pixbuf;
GdkPixbuf *dst_pixbuf; /* The pixbuf which ends up on screen */
RsttoNavigator *navigator;
@@ -692,9 +693,9 @@
}
if (viewer->priv->loader)
{
- gdk_pixbuf_loader_close(viewer->priv->loader, NULL);
g_signal_handlers_disconnect_by_func(viewer->priv->loader , cb_rstto_picture_viewer_area_prepared, viewer);
g_signal_handlers_disconnect_by_func(viewer->priv->loader , cb_rstto_picture_viewer_area_updated, viewer);
+ gdk_pixbuf_loader_close(viewer->priv->loader, NULL);
g_object_unref(viewer->priv->loader);
}
viewer->priv->loader = gdk_pixbuf_loader_new();
@@ -705,9 +706,9 @@
ThunarVfsInfo *info = rstto_navigator_entry_get_info(entry);
gchar *path = thunar_vfs_path_dup_string(info->path);
- GIOChannel *io_channel = g_io_channel_new_file(path, "r", NULL);
- g_io_channel_set_encoding(io_channel, NULL, NULL);
- g_io_add_watch(io_channel, G_IO_IN | G_IO_PRI, (GIOFunc)cb_rstto_picture_viewer_read_file, viewer);
+ viewer->priv->io_channel = g_io_channel_new_file(path, "r", NULL);
+ 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
{
@@ -808,31 +809,39 @@
GError *error = NULL;
- GIOStatus status = g_io_channel_read_chars(io_channel, buffer, 1024, &bytes_read, &error);
+ GIOStatus status;
+ if (viewer->priv->io_channel == io_channel)
+ {
+ status = g_io_channel_read_chars(io_channel, buffer, 1024, &bytes_read, &error);
- switch (status)
- {
- case G_IO_STATUS_NORMAL:
- if(gdk_pixbuf_loader_write(viewer->priv->loader, (const guchar *)buffer, bytes_read, NULL) == FALSE)
- {
+ switch (status)
+ {
+ case G_IO_STATUS_NORMAL:
+ if(gdk_pixbuf_loader_write(viewer->priv->loader, (const guchar *)buffer, bytes_read, NULL) == FALSE)
+ {
+ gdk_pixbuf_loader_close(viewer->priv->loader, NULL);
+ viewer->priv->io_channel = NULL;
+ return FALSE;
+ }
+ return TRUE;
+ break;
+ case G_IO_STATUS_EOF:
+ gdk_pixbuf_loader_write(viewer->priv->loader, (const guchar *)buffer, bytes_read, NULL);
gdk_pixbuf_loader_close(viewer->priv->loader, NULL);
+ viewer->priv->io_channel = NULL;
return FALSE;
- }
- return TRUE;
- break;
- case G_IO_STATUS_EOF:
- gdk_pixbuf_loader_write(viewer->priv->loader, (const guchar *)buffer, bytes_read, NULL);
- gdk_pixbuf_loader_close(viewer->priv->loader, NULL);
- return FALSE;
- break;
- case G_IO_STATUS_ERROR:
- gdk_pixbuf_loader_close(viewer->priv->loader, NULL);
- return FALSE;
- break;
- case G_IO_STATUS_AGAIN:
- return TRUE;
- break;
+ break;
+ case G_IO_STATUS_ERROR:
+ gdk_pixbuf_loader_close(viewer->priv->loader, NULL);
+ viewer->priv->io_channel = NULL;
+ return FALSE;
+ break;
+ case G_IO_STATUS_AGAIN:
+ return TRUE;
+ break;
+ }
}
+ g_io_channel_shutdown(io_channel, FALSE, NULL);
return FALSE;
}
@@ -858,7 +867,7 @@
if (time != -1)
{
/* update frame */
- g_debug("Timeout: %u\n");
+ g_debug("Timeout: %u\n", time);
}
}
@@ -904,4 +913,6 @@
}
rstto_picture_viewer_refresh(viewer);
rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+ if (0)
+ cb_rstto_picture_viewer_update_image(NULL);
}
More information about the Goodies-commits
mailing list