Reuse a ca_context for playing sound instead of creating one each play.
[modest] / src / hildon2 / modest-platform.c
index c9364d7..7a451b5 100644 (file)
 #define FOLDER_PICKER_CURRENT_FOLDER "current-folder"
 #define MODEST_ALARMD_APPID PACKAGE_NAME
 
+static ca_context *ca_con = NULL;
+
 
 static void modest_platform_play_email_tone (void);
 
@@ -163,23 +165,16 @@ gboolean
 modest_platform_init (int argc, char *argv[])
 {
        osso_context_t *osso_context;
-       
        osso_hw_state_t hw_state = { 0 };
-       DBusConnection *con;    
+       DBusConnection *con;
        GSList *acc_names;
-       
+
        if (!check_required_files ()) {
                g_printerr ("modest: missing required files\n");
                return FALSE;
        }
-       
-       osso_context =  osso_initialize(PACKAGE,PACKAGE_VERSION,
-                                       FALSE, NULL);   
-       if (!osso_context) {
-               g_printerr ("modest: failed to acquire osso context\n");
-               return FALSE;
-       }
-       modest_maemo_utils_set_osso_context (osso_context);
+
+       osso_context = modest_maemo_utils_get_osso_context();
 
        if ((con = osso_get_dbus_connection (osso_context)) == NULL) {
                g_printerr ("modest: could not get dbus connection\n");
@@ -710,20 +705,25 @@ folder_chooser_dialog_run (ModestFolderView *original,
                                       MODEST_FOLDER_VIEW (folder_view));
 
        if (TNY_IS_ACCOUNT (current)) {
-               /* If the current account is the local folders account
-                  then it's because we're creating a new folder from
-                  folders view (we force the local account to be the
-                  default location for new folders */
-               if (modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (current)))
+               /* Local folders and MMC account are always shown
+                  along with the currently visible server account */
+               if (modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (current)) ||
+                   modest_tny_account_is_memory_card_account (TNY_ACCOUNT (current)))
                        visible_id =
                                g_strdup (modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW (original)));
                else
                        visible_id = g_strdup (tny_account_get_id (TNY_ACCOUNT (current)));
-       } else if (TNY_IS_FOLDER (current)) {
+       } else if (TNY_IS_FOLDER (current) && !TNY_IS_MERGE_FOLDER (current)) {
                TnyAccount *account;
                account = tny_folder_get_account (TNY_FOLDER (current));
                if (account) {
-                       visible_id = g_strdup (tny_account_get_id (account));
+                       if (modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (account)) ||
+                           modest_tny_account_is_memory_card_account (TNY_ACCOUNT (account))) {
+                               visible_id =
+                                       g_strdup (modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW (original)));
+                       } else {
+                               visible_id = g_strdup (tny_account_get_id (account));
+                       }
                        g_object_unref (account);
                }
        } else {
@@ -2594,7 +2594,6 @@ modest_platform_play_email_tone (void)
        gchar *mail_tone;
        gint mail_volume_int;
        int ret;
-       ca_context *ca_con = NULL;
        ca_proplist *pl = NULL;
 
 #ifdef MODEST_USE_PROFILE
@@ -2622,14 +2621,15 @@ modest_platform_play_email_tone (void)
 
        if (mail_volume_int > 0) {
 
-               if ((ret = ca_context_create(&ca_con)) != CA_SUCCESS) {
-                       g_warning("ca_context_create: %s\n", ca_strerror(ret));
-                       return;
+               if (ca_con == NULL) {
+                       if ((ret = ca_context_create (&ca_con)) != CA_SUCCESS) {
+                               g_warning("ca_context_create: %s\n", ca_strerror(ret));
+                               return;
+                       }
                }
 
                if ((ret = ca_context_open(ca_con)) != CA_SUCCESS) {
                        g_warning("ca_context_open: %s\n", ca_strerror(ret));
-                       ca_context_destroy(ca_con);
                        return;
                }
 
@@ -2641,7 +2641,6 @@ modest_platform_play_email_tone (void)
                g_debug("ca_context_play_full (vol %f): %s\n", (gfloat) mail_volume_int, ca_strerror(ret));
 
                ca_proplist_destroy(pl);
-               ca_context_destroy(ca_con);
        }
 
        g_free (mail_tone);