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);
|
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
|
static void
|
||||||
_ebluez4_cb_forget(void *data, E_Menu *m, E_Menu_Item *mi)
|
_ebluez4_cb_forget(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||||
{
|
{
|
||||||
|
@ -130,8 +136,16 @@ _ebluez4_add_devices(Instance *inst)
|
||||||
NULL);
|
NULL);
|
||||||
e_menu_item_submenu_set(mi, subm);
|
e_menu_item_submenu_set(mi, subm);
|
||||||
mi = e_menu_item_new(subm);
|
mi = e_menu_item_new(subm);
|
||||||
|
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_label_set(mi, "Connect");
|
||||||
e_menu_item_callback_set(mi, _ebluez4_cb_connect, dev);
|
e_menu_item_callback_set(mi, _ebluez4_cb_connect, dev);
|
||||||
|
}
|
||||||
mi = e_menu_item_new(subm);
|
mi = e_menu_item_new(subm);
|
||||||
e_menu_item_label_set(mi, "Forget");
|
e_menu_item_label_set(mi, "Forget");
|
||||||
e_menu_item_callback_set(mi, _ebluez4_cb_forget, dev);
|
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, "");
|
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
|
static void
|
||||||
_on_paired(void *data, const EDBus_Message *msg, EDBus_Pending *pending)
|
_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);
|
_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
|
void
|
||||||
ebluez4_pair_with_device(const char *addr)
|
ebluez4_pair_with_device(const char *addr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -61,6 +61,7 @@ void ebluez4_edbus_shutdown();
|
||||||
void ebluez4_start_discovery();
|
void ebluez4_start_discovery();
|
||||||
void ebluez4_stop_discovery();
|
void ebluez4_stop_discovery();
|
||||||
void ebluez4_connect_to_device(Device *dev);
|
void ebluez4_connect_to_device(Device *dev);
|
||||||
|
void ebluez4_disconnect_device(Device *dev);
|
||||||
void ebluez4_pair_with_device(const char *addr);
|
void ebluez4_pair_with_device(const char *addr);
|
||||||
void ebluez4_remove_device(EDBus_Object *obj);
|
void ebluez4_remove_device(EDBus_Object *obj);
|
||||||
int ebluez4_path_cmp(const void *d1, const void *d2);
|
int ebluez4_path_cmp(const void *d1, const void *d2);
|
||||||
|
|
Loading…
Reference in New Issue