[maemo-commits] [maemo-commits] r18359 - in projects/haf/trunk/ke-recv: debian src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed May 13 19:02:34 EEST 2009
- Previous message: [maemo-commits] r18358 - in projects/haf/trunk/hildon-thumbnail: . daemon
- Next message: [maemo-commits] r18360 - in projects/haf/trunk/libmatchbox2: . matchbox/core
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: kihamala Date: 2009-05-13 19:02:30 +0300 (Wed, 13 May 2009) New Revision: 18359 Modified: projects/haf/trunk/ke-recv/debian/changelog projects/haf/trunk/ke-recv/src/ke-recv.c Log: fix bug with external card storage detection + track HD readiness again Modified: projects/haf/trunk/ke-recv/debian/changelog =================================================================== --- projects/haf/trunk/ke-recv/debian/changelog 2009-05-13 14:17:58 UTC (rev 18358) +++ projects/haf/trunk/ke-recv/debian/changelog 2009-05-13 16:02:30 UTC (rev 18359) @@ -5,6 +5,12 @@ * Do not lose mount point info when card was mounted read-only. * Fixes: NB#114816 - Error banner is displayed and henceforth memory card in not formatted when trying to format memory card + * Start tracking hildon-desktop readiness again, using the flag file and + D-Bus signal. Also initialisation of memory cards is postponed until + hildon-desktop is running. + * Fix problem with detecting the storage for external card. HAL's device + hierarchy is different at times (sometimes mmc_host is parent of storage, + sometimes grandparent). Partial fix to NB#115433 (remaining part is HAL's) -- Kimmo Hämäläinen <kimmo.hamalainen at nokia.com> Tue, 12 May 2009 14:13:06 +0300 Modified: projects/haf/trunk/ke-recv/src/ke-recv.c =================================================================== --- projects/haf/trunk/ke-recv/src/ke-recv.c 2009-05-13 14:17:58 UTC (rev 18358) +++ projects/haf/trunk/ke-recv/src/ke-recv.c 2009-05-13 16:02:30 UTC (rev 18359) @@ -36,7 +36,7 @@ #define FDO_OBJECT_PATH "/org/freedesktop/Notifications" #define FDO_INTERFACE "org.freedesktop.Notifications" #define USB_DOMAIN "hildon-status-bar-usb" -#define DESKTOP_SVC "com.nokia.hildon-desktop" +#define DESKTOP_IF "com.nokia.HildonDesktop" #define FREMANTLE_MODE 1 @@ -210,6 +210,7 @@ { ULOG_DEBUG_F("entered"); desktop_started = TRUE; + if (!mmc_initialised) { /* initialise GConf keys and possibly mount or USB-share */ if (int_mmc_enabled) { @@ -218,10 +219,12 @@ handle_event(E_INIT_CARD, &ext_mmc, NULL); mmc_initialised = TRUE; } +#if 0 if (delayed_auto_install_check) { possibly_start_am(); delayed_auto_install_check = FALSE; } +#endif return FALSE; } @@ -779,19 +782,10 @@ ULOG_INFO_L("Shutdown signal from MCE, unmounting and exiting"); g_main_loop_quit(mainloop); handled = TRUE; - } else if (dbus_message_is_signal(m, "org.freedesktop.DBus", - "NameOwnerChanged")) { - DBusMessageIter iter; - char *s = NULL; - - if (dbus_message_iter_init(m, &iter) && - dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING) { - dbus_message_iter_get_basic(&iter, &s); - if (s && strcmp(s, DESKTOP_SVC) == 0) { - ULOG_DEBUG_F("hildon-desktop registered to system bus"); - g_timeout_add(10 * 1000, set_desktop_started, NULL); - } - } + } else if (!desktop_started && + dbus_message_is_signal(m, DESKTOP_IF, "ready")) { + ULOG_DEBUG_F("hildon-desktop registered to system bus"); + g_timeout_add(1000, set_desktop_started, NULL); handled = TRUE; } /* invalidate */ @@ -1858,7 +1852,7 @@ set_usb_mode_key("idle"); } - if (!mmc_initialised) { + if (desktop_started && !mmc_initialised) { /* initialise GConf keys and possibly mount or * USB-share */ if (int_mmc_enabled) { @@ -2551,6 +2545,7 @@ handle_event(E_VOLUME_ADDED, &int_mmc, udi); } else if ((si = storage_for_volume(udi)) != NULL) { volume_list_t *vol; + ULOG_DEBUG_F("%s is USB volume", udi); vol = add_usb_volume(&si->volumes, udi); if (vol != NULL && vol->dev_name != NULL && vol->mountpoint != NULL @@ -2566,23 +2561,31 @@ } } } else if (has_capability(udi, "storage")) { - char *parent, *grandparent = NULL; + char *parent, *grandpa = NULL, *mmc_host = NULL; parent = get_prop_string(udi, "info.parent"); - if (parent != NULL) { - grandparent = get_prop_string(parent, "info.parent"); + if (parent && has_capability(parent, "mmc_host")) + mmc_host = parent; + else if (parent) { + grandpa = get_prop_string(parent, "info.parent"); + if (grandpa && has_capability(grandpa, "mmc_host")) + mmc_host = grandpa; } - if (grandparent == NULL) { - ULOG_DEBUG_F("storage didn't have grandparent"); + + if (mmc_host == NULL) { + ULOG_DEBUG_F("couldn't find mmc_host for storage"); if (parent != NULL) libhal_free_string(parent); + if (grandpa != NULL) libhal_free_string(grandpa); return; } - if (strcmp(ext_mmc.udi, grandparent) == 0) { + ULOG_DEBUG_F("comparing %s to %s or to %s", mmc_host, + ext_mmc.udi, int_mmc.udi); + if (strcmp(ext_mmc.udi, mmc_host) == 0) { add_storage_for_mmc(&ext_mmc, parent, udi); setup_mmc_mount_timeout(&ext_mmc, 5); } else if (int_mmc_enabled && - strcmp(int_mmc.udi, grandparent) == 0) { + strcmp(int_mmc.udi, mmc_host) == 0) { add_storage_for_mmc(&int_mmc, parent, udi); setup_mmc_mount_timeout(&int_mmc, 5); } else { @@ -2600,7 +2603,9 @@ if (s != NULL) libhal_free_string(s); } libhal_free_string(parent); - libhal_free_string(grandparent); + libhal_free_string(grandpa); + } else { + ULOG_DEBUG_F("%s is not a storage or volume", udi); } } @@ -3136,7 +3141,9 @@ MCE_MATCH_RULE); exit(1); } - dbus_bus_add_match(conn, "type='signal',member='NameOwnerChanged'", + /* match for HD readiness signal */ + dbus_bus_add_match(conn, "type='signal',member='ready'," + "interface='" DESKTOP_IF "'", &error); if (dbus_error_is_set(&error)) { ULOG_CRIT_L("dbus_bus_add_match failed"); @@ -3249,23 +3256,22 @@ init_usb_volumes(); #endif -#if 0 /* check if hildon-desktop is running */ - if (dbus_bus_name_has_owner(sys_conn, DESKTOP_SVC, NULL)) { + if (g_file_test("/tmp/hildon-desktop/desktop-started.stamp", + G_FILE_TEST_EXISTS)) { ULOG_DEBUG_F("hildon-desktop is running"); desktop_started = TRUE; } + +#if 0 if (getenv("FIRST_BOOT") != NULL) { ULOG_DEBUG_F("this is the first boot"); first_boot = TRUE; } #endif - /* FIXME: now we assume that desktop is running - * (needs rechecking and possibly fixing hildon-desktop) */ - desktop_started = TRUE; - - if (usb_state != S_INVALID_USB_STATE && !mmc_initialised) { + if (desktop_started && usb_state != S_INVALID_USB_STATE + && !mmc_initialised) { /* initialise GConf keys and possibly mount or USB-share */ if (int_mmc_enabled) { handle_event(E_INIT_CARD, &int_mmc, NULL);
- Previous message: [maemo-commits] r18358 - in projects/haf/trunk/hildon-thumbnail: . daemon
- Next message: [maemo-commits] r18360 - in projects/haf/trunk/libmatchbox2: . matchbox/core
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]