diff -ur gnocky-0.0.7.old/src/monitor.c gnocky-0.0.7/src/monitor.c --- gnocky-0.0.7.old/src/monitor.c 2010-09-19 09:55:09.000000000 +0000 +++ gnocky-0.0.7/src/monitor.c 2010-09-19 11:48:10.045015802 +0000 @@ -500,7 +500,13 @@ static gn_error gnocky_read_sms_list() { + gn_sms_folder_list folders; gn_error error = GN_ERR_NONE; + gn_data gdat, *data=&gdat; + int i; + + memset(&folders, 0, sizeof(folders)); + gn_data_clear(data); g_mutex_lock(sms_mutex); @@ -509,23 +515,16 @@ g_slist_free(sms_list); sms_list = NULL; - error = gnocky_read_sms_list_mt("ME"); - if ((error == GN_ERR_NONE) || (error == GN_ERR_INVALIDMEMORYTYPE)) { - error = gnocky_read_sms_list_mt("IN"); - if (error == GN_ERR_INVALIDMEMORYTYPE) { - error = gnocky_read_sms_list_mt("SM"); - } - } + data->sms_folder_list = &folders; + + if ((error = gn_sm_functions(GN_OP_GetSMSFolders, data, &statemachine)) != GN_ERR_NONE) + g_print("%s: %s\n", __FUNCTION__, gn_error_print(error)); + else for (i = 0; i < folders.number; i++) + if((error = gnocky_read_sms_list_mt(gn_memory_type2str(folders.folder_id[i]))) != GN_ERR_NONE) + g_print("%s: %s\n", __FUNCTION__, gn_error_print(error)); g_mutex_unlock(sms_mutex); -#if 1 - /* FIXME if there is an error sometimes the GUI locks up later after returning from this function */ - if (error != GN_ERR_NONE) { - g_print("%s: %s\n", __FUNCTION__, gn_error_print(error)); - error = GN_ERR_NONE; - } -#endif return error; }