From 07cc9c96594d14cdb822137c74b7922cd67563f4 Mon Sep 17 00:00:00 2001 From: Lucas Joia Date: Fri, 4 Jan 2013 16:13:38 +0000 Subject: [PATCH] e/bluez4: bug fixes Patch by: Lucas Joia SVN revision: 82207 --- src/modules/bluez4/e_mod_main.c | 15 ++++++++++----- src/modules/bluez4/ebluez4.c | 9 ++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/modules/bluez4/e_mod_main.c b/src/modules/bluez4/e_mod_main.c index 39a7a4156..feb677741 100644 --- a/src/modules/bluez4/e_mod_main.c +++ b/src/modules/bluez4/e_mod_main.c @@ -254,9 +254,13 @@ _menu_post_deactivate(void *data __UNUSED__, E_Menu *m) { Eina_List *iter; E_Menu_Item *mi; - Instance *inst; + Instance *inst = data; - if ((inst = data)) e_gadcon_locked_set(inst->gcc->gadcon, 0); + if (!(m->parent_item) || !(m->parent_item->menu)) + { + e_gadcon_locked_set(inst->gcc->gadcon, 0); + inst->menu = NULL; + } EINA_LIST_FOREACH(m->items, iter, mi) if (mi->submenu) e_menu_deactivate(mi->submenu); e_object_del(E_OBJECT(m)); @@ -291,7 +295,7 @@ _ebluez4_add_devices(Instance *inst) e_menu_item_check_set(mi, 1); subm = e_menu_new(); e_menu_post_deactivate_callback_set(subm, _menu_post_deactivate, - NULL); + inst); e_menu_item_submenu_set(mi, subm); submi = e_menu_item_new(subm); if (dev->connected) @@ -415,7 +419,7 @@ _gc_shutdown(E_Gadcon_Client *gcc) evas_object_del(inst->o_bluez4); } - e_menu_deactivate(inst->menu); + if (inst->menu) e_menu_deactivate(inst->menu); _ebluez4_search_dialog_del(inst); _ebluez4_adap_list_dialog_del(inst); @@ -482,6 +486,7 @@ EAPI int e_modapi_shutdown(E_Module *m) { ebluez4_edbus_shutdown(); + e_gadcon_provider_unregister(&_gc_class); return 1; } @@ -552,7 +557,7 @@ ebluez4_update_all_gadgets_visibility(void) EINA_LIST_FOREACH(instances, iter, inst) { _ebluez4_set_mod_icon(inst->o_bluez4); - e_menu_deactivate(inst->menu); + if (inst->menu) e_menu_deactivate(inst->menu); _ebluez4_search_dialog_del(inst); _ebluez4_adap_list_dialog_del(inst); } diff --git a/src/modules/bluez4/ebluez4.c b/src/modules/bluez4/ebluez4.c index 71924f824..65137375b 100644 --- a/src/modules/bluez4/ebluez4.c +++ b/src/modules/bluez4/ebluez4.c @@ -413,9 +413,6 @@ _on_device_found(void *context, const EDBus_Message *msg) if(eina_list_search_unsorted(ctxt->found_devices, _dev_addr_cmp, addr)) return; - if (!edbus_message_arguments_get(msg, "a{sv}", &dict)) - return; - _retrieve_properties(dict, &addr, &name, &icon, &paired, &connected, &uuids); dev = calloc(1, sizeof(Device)); @@ -552,6 +549,7 @@ _unset_default_adapter(void) ctxt->devices = NULL; _free_dev_list(&ctxt->found_devices); ctxt->found_devices = NULL; + edbus_object_unref(ctxt->adap_obj); ctxt->adap_obj = NULL; ebluez4_update_all_gadgets_visibility(); } @@ -750,9 +748,10 @@ ebluez4_edbus_init(void) void ebluez4_edbus_shutdown(void) { - _free_dev_list(&ctxt->devices); - _free_dev_list(&ctxt->found_devices); + if (ctxt->adap_obj) + _unset_default_adapter(); _free_adap_list(); + edbus_object_unref(edbus_proxy_object_get(ctxt->man_proxy)); edbus_connection_unref(ctxt->conn); free(ctxt);