[Goodies-commits] r3495 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Fri Nov 2 23:11:27 CET 2007


Author: stephan
Date: 2007-11-02 22:11:27 +0000 (Fri, 02 Nov 2007)
New Revision: 3495

Modified:
   ristretto/trunk/src/main_window.c
   ristretto/trunk/src/navigator.c
Log:
Fix segfault
add preload to preferences dialog


Modified: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c	2007-11-02 18:06:34 UTC (rev 3494)
+++ ristretto/trunk/src/main_window.c	2007-11-02 22:11:27 UTC (rev 3495)
@@ -1018,19 +1018,31 @@
     gtk_notebook_append_page(GTK_NOTEBOOK(notebook), main_vbox, main_lbl);
 
     GtkWidget *slideshow_frame = gtk_frame_new(N_("Slideshow:"));
+    GtkWidget *preload_frame = gtk_frame_new(N_("Preload:"));
 
     GtkWidget *slideshow_vbox = gtk_vbox_new(FALSE, 0);
     GtkWidget *slideshow_lbl = gtk_label_new(NULL);
     GtkWidget *slideshow_hscale = gtk_hscale_new_with_range(1, 60, 1);
+
+    GtkWidget *preload_vbox = gtk_vbox_new(FALSE, 0);
+    GtkWidget *preload_lbl = gtk_label_new(NULL);
+    GtkWidget *preload_check = gtk_check_button_new_with_mnemonic(N_("_Preload images"));
     
     gtk_range_set_value(GTK_RANGE(slideshow_hscale), window->priv->settings.slideshow_timeout / 1000);
 
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(preload_check), window->priv->navigator->preload);
+
     gtk_box_pack_start(GTK_BOX(slideshow_vbox), slideshow_lbl, FALSE, TRUE, 0);
     gtk_box_pack_start(GTK_BOX(slideshow_vbox), slideshow_hscale, FALSE, TRUE, 0);
 
+    gtk_box_pack_start(GTK_BOX(preload_vbox), preload_lbl, FALSE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(preload_vbox), preload_check, FALSE, TRUE, 0);
+
     gtk_container_add(GTK_CONTAINER(slideshow_frame), slideshow_vbox);
+    gtk_container_add(GTK_CONTAINER(preload_frame), preload_vbox);
 
     gtk_box_pack_start(GTK_BOX(main_vbox), slideshow_frame, FALSE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(main_vbox), preload_frame, FALSE, TRUE, 0);
 
     gtk_widget_show_all(notebook);
 
@@ -1040,6 +1052,7 @@
     {
         case GTK_RESPONSE_OK:
             rstto_main_window_set_slideshow_timeout(window, gtk_range_get_value(GTK_RANGE(slideshow_hscale)) * 1000);
+            window->priv->navigator->preload = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(preload_check));
         default:
             break;
     }

Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2007-11-02 18:06:34 UTC (rev 3494)
+++ ristretto/trunk/src/navigator.c	2007-11-02 22:11:27 UTC (rev 3495)
@@ -131,7 +131,7 @@
     navigator->old_position = -1;
     navigator->timeout = 5000;
     navigator->monitor = thunar_vfs_monitor_get_default();
-    navigator->max_history = 1;
+    navigator->max_history = 0;
     navigator->preload = FALSE;
 
     navigator->factory = thunar_vfs_thumb_factory_new(THUNAR_VFS_THUMB_SIZE_NORMAL);
@@ -411,9 +411,17 @@
             navigator->id = g_timeout_add(navigator->timeout, (GSourceFunc)cb_rstto_navigator_running, navigator);
             if (navigator->preload)
             {
-                RsttoNavigatorEntry *next_entry = g_list_next(navigator->file_iter)->data;
-
-                rstto_navigator_entry_load_image(next_entry, FALSE);
+                GList *next = g_list_next(navigator->file_iter);
+                if (next == NULL)
+                {
+                    next = navigator->file_list;
+                }
+                if (next != NULL)
+                {
+                    RsttoNavigatorEntry *next_entry = next->data;
+                    
+                    rstto_navigator_entry_load_image(next_entry, FALSE);
+                }
             }
         }
     }
@@ -586,9 +594,17 @@
 
         if (navigator->preload)
         {
-            RsttoNavigatorEntry *next_entry = g_list_next(navigator->file_iter)->data;
-
-            rstto_navigator_entry_load_image(next_entry, FALSE);
+            GList *next = g_list_next(navigator->file_iter);
+            if (next == NULL)
+            {
+                next = navigator->file_list;
+            }
+            if (next != NULL)
+            {
+                RsttoNavigatorEntry *next_entry = next->data;
+                
+                rstto_navigator_entry_load_image(next_entry, FALSE);
+            }
         }
     }
     else




More information about the Goodies-commits mailing list