Changeset 3482

Show
Ignore:
Timestamp:
03/07/08 12:23:30
Author:
pvanhoof
Message:

Async folder renames in the demoui

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libtinymail-camel/tny-camel-folder-priv.h

    r2929 r3482  
    3434        guint folder_changed_id; 
    3535        guint reason_to_live; 
    36         GMutex *reason_lock; 
     36        GStaticRecMutex *reason_lock; 
    3737        GStaticRecMutex *folder_lock, *obs_lock; 
    3838        CamelFolder *folder; 
  • trunk/libtinymail-camel/tny-camel-folder.c

    r3466 r3482  
    41954195_tny_camel_folder_unreason (TnyCamelFolderPriv *priv) 
    41964196{ 
    4197         g_mutex_lock (priv->reason_lock); 
     4197        g_static_rec_mutex_lock (priv->reason_lock); 
    41984198        priv->reason_to_live--; 
    41994199 
     
    42314231                } 
    42324232        } 
    4233         g_mutex_unlock (priv->reason_lock); 
     4233        g_static_rec_mutex_unlock (priv->reason_lock); 
    42344234} 
    42354235 
     
    42374237_tny_camel_folder_reason (TnyCamelFolderPriv *priv) 
    42384238{ 
    4239         g_mutex_lock (priv->reason_lock); 
     4239        //g_static_rec_mutex_lock (priv->reason_lock); 
    42404240        priv->reason_to_live++; 
    4241         g_mutex_unlock (priv->reason_lock); 
     4241        //g_static_rec_mutex_unlock (priv->reason_lock); 
    42424242} 
    42434243 
     
    55705570        priv->obs_lock = NULL; 
    55715571 
    5572         g_mutex_free (priv->reason_lock); 
     5572        g_free (priv->reason_lock); 
     5573        priv->reason_lock = NULL; 
    55735574 
    55745575        if (priv->folder_name) 
     
    57545755        priv->remove_strat = tny_camel_msg_remove_strategy_new (); 
    57555756        priv->receive_strat = tny_camel_full_msg_receive_strategy_new (); 
    5756         priv->reason_lock = g_mutex_new (); 
     5757        priv->reason_lock = g_new0 (GStaticRecMutex, 1); 
     5758        g_static_rec_mutex_init (priv->reason_lock); 
     5759 
    57575760        priv->folder_lock = g_new0 (GStaticRecMutex, 1); 
    57585761        g_static_rec_mutex_init (priv->folder_lock); 
  • trunk/tests/c-demo/tny-demoui-summary-view.c

    r3415 r3482  
    11011101 
    11021102 
     1103static void 
     1104on_rename (TnyFolder *self, gboolean cancelled, TnyFolderStore *into, TnyFolder *new_folder, GError *err, gpointer user_data) 
     1105{ 
     1106        GObject *mself = user_data; 
     1107 
     1108        if (err != NULL) 
     1109        { 
     1110                GtkWidget *edialog; 
     1111                edialog = gtk_message_dialog_new ( 
     1112                          GTK_WINDOW (gtk_widget_get_parent (GTK_WIDGET (mself))), 
     1113                          GTK_DIALOG_DESTROY_WITH_PARENT, 
     1114                          GTK_MESSAGE_ERROR, 
     1115                          GTK_BUTTONS_CLOSE, 
     1116                          err->message); 
     1117                g_signal_connect_swapped (edialog, "response", 
     1118                        G_CALLBACK (gtk_widget_destroy), edialog); 
     1119                gtk_widget_show_all (edialog); 
     1120        } else { 
     1121        } 
     1122 
     1123        g_object_unref (mself); 
     1124} 
     1125 
    11031126static void  
    11041127on_rename_folder_activate (GtkMenuItem *mitem, gpointer user_data) 
     
    11521175                                        gboolean move = (result == GTK_RESPONSE_ACCEPT); 
    11531176                                        GError *err = NULL; 
    1154                                         const gchar *newname = gtk_entry_get_text (GTK_ENTRY (entry)); 
     1177                                        const gchar *newname = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry))); 
    11551178                                        TnyFolderStore *into; 
    1156                                         TnyFolder *nfol; 
    11571179 
    11581180                                        clear_header_view (priv); 
    11591181 
    11601182                                        into = tny_folder_get_folder_store (folder); 
    1161                                         nfol = tny_folder_copy (folder, into, newname, move, &err); 
    1162  
    1163                                         if (err != NULL) 
    1164                                         { 
    1165                                                 GtkWidget *edialog; 
    1166  
    1167                                                 gtk_widget_destroy (dialog); 
    1168                                                 dialog = NULL; 
    1169  
    1170                                                 edialog = gtk_message_dialog_new ( 
    1171                                                                                   GTK_WINDOW (gtk_widget_get_parent (GTK_WIDGET (self))), 
    1172                                                                                   GTK_DIALOG_DESTROY_WITH_PARENT, 
    1173                                                                                   GTK_MESSAGE_ERROR, 
    1174                                                                                   GTK_BUTTONS_CLOSE, 
    1175                                                                                   err->message); 
    1176                                                 g_signal_connect_swapped (edialog, "response", 
    1177                                                         G_CALLBACK (gtk_widget_destroy), edialog); 
    1178                                                 gtk_widget_show_all (edialog); 
    1179                                                 g_error_free (err); 
    1180                                         } 
     1183 
     1184                                        gtk_widget_destroy (dialog); 
     1185                                        dialog = NULL; 
     1186 
     1187                                        tny_folder_copy_async (folder, into, newname, move,  
     1188                                                on_rename, NULL, g_object_ref (self)); 
     1189 
     1190                                        g_free (newname); 
    11811191 
    11821192                                        if (into) 
    11831193                                                g_object_unref (into); 
    11841194 
    1185                                         if (nfol) 
    1186                                                 g_object_unref (nfol); 
    11871195 
    11881196                                }