forked from enlightenment/enlightenment
e/bluez4: allow Disconnect when device is connected
Patch by: Lucas Joia <lucasjoia@profusion.mobi> SVN revision: 82196
This commit is contained in:
parent
24937afc55
commit
f41c88872c
|
@ -81,6 +81,12 @@ _ebluez4_cb_connect(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
ebluez4_connect_to_device(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_ebluez4_cb_disconnect(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
ebluez4_disconnect_device(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_ebluez4_cb_forget(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
|
@ -130,8 +136,16 @@ _ebluez4_add_devices(Instance *inst)
|
|||
NULL);
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
mi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(mi, "Connect");
|
||||
e_menu_item_callback_set(mi, _ebluez4_cb_connect, dev);
|
||||
if (dev->connected)
|
||||
{
|
||||
e_menu_item_label_set(mi, "Disconnect");
|
||||
e_menu_item_callback_set(mi, _ebluez4_cb_disconnect, dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
e_menu_item_label_set(mi, "Connect");
|
||||
e_menu_item_callback_set(mi, _ebluez4_cb_connect, dev);
|
||||
}
|
||||
mi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(mi, "Forget");
|
||||
e_menu_item_callback_set(mi, _ebluez4_cb_forget, dev);
|
||||
|
|
|
@ -221,6 +221,26 @@ _try_to_connect(EDBus_Proxy *proxy)
|
|||
edbus_proxy_call(proxy, "Connect", _on_connected, NULL, -1, "");
|
||||
}
|
||||
|
||||
static void
|
||||
_on_disconnected(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
|
||||
{
|
||||
const char *err_name, *err_msg;
|
||||
|
||||
if (edbus_message_error_get(msg, &err_name, &err_msg))
|
||||
{
|
||||
ERR("%s: %s", err_name, err_msg);
|
||||
ebluez4_show_error(err_name, err_msg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_try_to_disconnect(EDBus_Proxy *proxy)
|
||||
{
|
||||
if (proxy)
|
||||
edbus_proxy_call(proxy, "Disconnect", _on_disconnected, NULL, -1, "");
|
||||
}
|
||||
|
||||
static void
|
||||
_on_paired(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
|
||||
{
|
||||
|
@ -491,6 +511,14 @@ ebluez4_connect_to_device(Device *dev)
|
|||
_try_to_connect(dev->proxy.audio_sink);
|
||||
}
|
||||
|
||||
void
|
||||
ebluez4_disconnect_device(Device *dev)
|
||||
{
|
||||
_try_to_disconnect(dev->proxy.input);
|
||||
_try_to_disconnect(dev->proxy.audio_source);
|
||||
_try_to_disconnect(dev->proxy.audio_sink);
|
||||
}
|
||||
|
||||
void
|
||||
ebluez4_pair_with_device(const char *addr)
|
||||
{
|
||||
|
|
|
@ -61,6 +61,7 @@ void ebluez4_edbus_shutdown();
|
|||
void ebluez4_start_discovery();
|
||||
void ebluez4_stop_discovery();
|
||||
void ebluez4_connect_to_device(Device *dev);
|
||||
void ebluez4_disconnect_device(Device *dev);
|
||||
void ebluez4_pair_with_device(const char *addr);
|
||||
void ebluez4_remove_device(EDBus_Object *obj);
|
||||
int ebluez4_path_cmp(const void *d1, const void *d2);
|
||||
|
|
Loading…
Reference in New Issue