[maemo-commits] [maemo-commits] r8441 - in projects/haf/trunk/maemo-af-desktop: . hildon-home
From: www-data at stage.maemo.org www-data at stage.maemo.orgDate: Wed Nov 29 11:08:58 EET 2006
- Previous message: [maemo-commits] r8440 - projects/haf/tags/hildon-libs
- Next message: [maemo-commits] r8442 - in projects/haf/trunk/maemo-af-desktop: . hildon-navigator
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2006-11-29 11:08:57 +0200 (Wed, 29 Nov 2006) New Revision: 8441 Modified: projects/haf/trunk/maemo-af-desktop/ChangeLog projects/haf/trunk/maemo-af-desktop/hildon-home/background-manager.c Log: 2006-11-29 Johan Bilien <johan.bilien at nokia.com> * hildon-home/background-manager.c: Check if the operation was cancelled during loading and compositing. Fixes: NB#42484 Modified: projects/haf/trunk/maemo-af-desktop/ChangeLog =================================================================== --- projects/haf/trunk/maemo-af-desktop/ChangeLog 2006-11-29 09:05:13 UTC (rev 8440) +++ projects/haf/trunk/maemo-af-desktop/ChangeLog 2006-11-29 09:08:57 UTC (rev 8441) @@ -1,3 +1,8 @@ +2006-11-29 Johan Bilien <johan.bilien at nokia.com> + + * hildon-home/background-manager.c: Check if the operation + was cancelled during loading and compositing. Fixes: NB#42484 + 2006-11-28 Moises Martinez <moises.martinzes at nokia.com> * hildon-navigator/hn-wm.c Modified: projects/haf/trunk/maemo-af-desktop/hildon-home/background-manager.c =================================================================== --- projects/haf/trunk/maemo-af-desktop/hildon-home/background-manager.c 2006-11-29 09:05:13 UTC (rev 8440) +++ projects/haf/trunk/maemo-af-desktop/hildon-home/background-manager.c 2006-11-29 09:08:57 UTC (rev 8441) @@ -533,12 +533,19 @@ gboolean image_from_mmc = FALSE; gboolean mmc_cover_open = FALSE; gboolean oom = FALSE; + BackgroundManager *bm; + BackgroundManagerPrivate *priv; g_return_val_if_fail (uri != NULL, NULL); client = gconf_client_get_default (); g_assert (GCONF_IS_CLIENT (client)); + bm = background_manager_get_default (); + g_assert (IS_BACKGROUND_MANAGER (bm)); + + priv = BACKGROUND_MANAGER_GET_PRIVATE (bm); + mmc_mount_point = g_strconcat ("file://", hildon_home_get_mmc_mount_point (), NULL); @@ -582,8 +589,17 @@ /* XXX Run the main loop to update the progress note */ if (cancellable) { + gboolean is_cancelled = TRUE; while (gtk_events_pending ()) gtk_main_iteration (); + + if (GTK_IS_DIALOG (priv->loading_note)) + is_cancelled = + GPOINTER_TO_INT (g_object_get_data (G_OBJECT (priv->loading_note), + "is-cancelled")); + + if (is_cancelled) + return NULL; } result = gnome_vfs_open (&handle, uri, GNOME_VFS_OPEN_READ); @@ -616,8 +632,17 @@ /* XXX Run the main loop to update the progress note */ if (cancellable) { + gboolean is_cancelled = TRUE; while (gtk_events_pending ()) gtk_main_iteration (); + + if (GTK_IS_DIALOG (priv->loading_note)) + is_cancelled = + GPOINTER_TO_INT (g_object_get_data (G_OBJECT (priv->loading_note), + "is-cancelled")); + + if (is_cancelled) + return NULL; } result = gnome_vfs_read (handle, buffer, BUFFER_SIZE, &bytes_read); @@ -1111,6 +1136,13 @@ g_error_free (bg_error); bg_error = NULL; } + else if (!compose) + { + g_debug ("Assuming loading of titlebar cancelled"); + if (pixbuf) + g_object_unref (pixbuf); + return NULL; + } else { g_debug ("Compositing titlebar"); @@ -1137,6 +1169,13 @@ g_error_free (bg_error); bg_error = NULL; } + else if (!compose) + { + g_debug ("Assuming loading of sidebar cancelled"); + if (pixbuf) + g_object_unref (pixbuf); + return NULL; + } else { gint width = gdk_pixbuf_get_width (compose); @@ -1363,17 +1402,17 @@ response == GTK_RESPONSE_DELETE_EVENT) { BackgroundManager *manager = BACKGROUND_MANAGER (user_data); + gtk_widget_set_sensitive (GTK_WIDGET (dialog), FALSE); if (manager->priv->child_pid != 0) { - g_object_set_data (G_OBJECT (dialog), - "is-cancelled", GINT_TO_POINTER (1)); - fprintf (stderr, "about to kill %i\n", manager->priv->child_pid); - gtk_widget_set_sensitive (GTK_WIDGET (dialog), FALSE); + g_debug ("about to kill %i\n", manager->priv->child_pid); kill (manager->priv->child_pid, SIGKILL); - g_signal_emit (manager, manager_signals[LOAD_CANCEL], 0); } + g_object_set_data (G_OBJECT (dialog), + "is-cancelled", GINT_TO_POINTER (1)); + g_signal_emit (manager, manager_signals[LOAD_CANCEL], 0); } } @@ -1530,30 +1569,45 @@ err = NULL; if (current->image_uri) - image = load_image_from_uri (current->image_uri, TRUE, cancellable, &err); - else - image = NULL; - - if (err && err->message) { - g_warning ("Unable to load background from `%s': %s", - current->image_uri, - err->message); + image = load_image_from_uri (current->image_uri, TRUE, cancellable, &err); - if (cancellable) + if (!image) { - if (priv->loading_note) - gtk_widget_destroy (priv->loading_note); - - priv->loading_note = NULL; + g_debug ("No image, no error. Assuming loading was cancelled"); + if (cancellable) + { + if (priv->loading_note) + gtk_widget_destroy (priv->loading_note); + + priv->loading_note = NULL; + } + return; } - - g_signal_emit (manager, manager_signals[LOAD_ERROR], 0, err); - g_error_free (err); + if (err && err->message) + { + g_warning ("Unable to load background from `%s': %s", + current->image_uri, + err->message); - return; + if (cancellable) + { + if (priv->loading_note) + gtk_widget_destroy (priv->loading_note); + + priv->loading_note = NULL; + } + + g_signal_emit (manager, manager_signals[LOAD_ERROR], 0, err); + + g_error_free (err); + + return; + } } + else + image = NULL; gdk_drawable_get_size (GDK_DRAWABLE (priv->desktop), &width, &height); @@ -1576,10 +1630,24 @@ return; } - else if (image) + else if (!pixbuf) { - g_object_unref (image); + g_debug ("Assuming compositing cancelled"); + if (image) + g_object_unref (image); + + if (cancellable) + { + if (priv->loading_note) + gtk_widget_destroy (priv->loading_note); + + priv->loading_note = NULL; + } + return; } + + if (image) + g_object_unref (image); pipe (parent_exit_notify); pipe (pipe_from_child);
- Previous message: [maemo-commits] r8440 - projects/haf/tags/hildon-libs
- Next message: [maemo-commits] r8442 - in projects/haf/trunk/maemo-af-desktop: . hildon-navigator
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]