aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--lib/widgets/ephy-spinner.c23
2 files changed, 25 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index fffc8280f..801dcfa4e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+
+
+ * lib/widgets/ephy-spinner.c: (ephy_spinner_start),
+ (ephy_spinner_dispose), (ephy_spinner_finalize),
+ (ephy_spinner_class_init):
+
+ Ensure the images are loaded before starting to spin.
+ Should fix crashes on start/new tab.
+
2005-10-06 Christian Persch <chpe@cvs.gnome.org>
* src/ephy-toolbar.c: (ephy_toolbar_update_spinner):
diff --git a/lib/widgets/ephy-spinner.c b/lib/widgets/ephy-spinner.c
index 2cdc809d1..5ae2876f2 100644
--- a/lib/widgets/ephy-spinner.c
+++ b/lib/widgets/ephy-spinner.c
@@ -740,17 +740,17 @@ ephy_spinner_start (EphySpinner *spinner)
details->spinning = TRUE;
if (GTK_WIDGET_MAPPED (GTK_WIDGET (spinner)) &&
- details->timer_task == 0)
+ details->timer_task == 0 &&
+ ephy_spinner_load_images (spinner))
+
{
-
- if (spinner->details->images != NULL)
+ if (details->images != NULL)
{
/* reset to first frame */
- spinner->details->current_image =
- spinner->details->images->images;
+ details->current_image = details->images->images;
}
- spinner->details->timer_task =
+ details->timer_task =
g_timeout_add (details->timeout,
(GSourceFunc) bump_spinner_frame_cb,
spinner);
@@ -893,7 +893,7 @@ ephy_spinner_unmap (GtkWidget *widget)
}
static void
-ephy_spinner_finalize (GObject *object)
+ephy_spinner_dispose (GObject *object)
{
EphySpinner *spinner = EPHY_SPINNER (object);
@@ -901,6 +901,14 @@ ephy_spinner_finalize (GObject *object)
(spinner->details->icon_theme,
G_CALLBACK (icon_theme_changed_cb), spinner);
+ G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+ephy_spinner_finalize (GObject *object)
+{
+ EphySpinner *spinner = EPHY_SPINNER (object);
+
ephy_spinner_remove_update_callback (spinner);
ephy_spinner_unload_images (spinner);
@@ -954,6 +962,7 @@ ephy_spinner_class_init (EphySpinnerClass *class)
parent_class = g_type_class_peek_parent (class);
+ object_class->dispose = ephy_spinner_dispose;
object_class->finalize = ephy_spinner_finalize;
widget_class->expose_event = ephy_spinner_expose;