Mercurial > hg > forks > geeqie
diff src/image.c @ 1916:69ab167a50f5
do not mix autodetected and user-defined stereo mode
author | Vladimir Nadvornik <nadvornik@suse.cz> |
---|---|
date | Sat, 14 May 2011 21:53:45 +0200 |
parents | 6e146fa6ec29 |
children | 4845663f466e 26dfd7a4d130 |
line wrap: on
line diff
--- a/src/image.c Sun Apr 10 21:11:50 2011 +0200 +++ b/src/image.c Sat May 14 21:53:45 2011 +0200 @@ -1105,7 +1105,7 @@ void image_change_pixbuf(ImageWindow *imd, GdkPixbuf *pixbuf, gdouble zoom, gboolean lazy) { - + StereoPixbufData stereo_data = STEREO_PIXBUF_DEFAULT; /* read_exif and similar functions can actually notice that the file has changed and trigger a notification that removes the pixbuf from cache and unrefs it. Therefore we must ref it here before it is taken over by the renderer. */ @@ -1124,9 +1124,13 @@ } } - if (pixbuf && imd->user_stereo) + if (pixbuf) { - g_object_set_data(G_OBJECT(pixbuf), "stereo_data", GINT_TO_POINTER(imd->user_stereo)); + stereo_data = imd->user_stereo; + if (stereo_data == STEREO_PIXBUF_DEFAULT) + { + stereo_data = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(pixbuf), "stereo_data")); + } } pixbuf_renderer_set_post_process_func((PixbufRenderer *)imd->pr, NULL, NULL, FALSE); @@ -1138,12 +1142,13 @@ if (lazy) { - pixbuf_renderer_set_pixbuf_lazy((PixbufRenderer *)imd->pr, pixbuf, zoom, imd->orientation); + pixbuf_renderer_set_pixbuf_lazy((PixbufRenderer *)imd->pr, pixbuf, zoom, imd->orientation, stereo_data); } else { pixbuf_renderer_set_pixbuf((PixbufRenderer *)imd->pr, pixbuf, zoom); pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, imd->orientation); + pixbuf_renderer_set_stereo_data((PixbufRenderer *)imd->pr, stereo_data); } if (pixbuf) g_object_unref(pixbuf);