devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e2a9988e5efcb606194a97f58e60815517e0c8a7
commit e2a9988e5efcb606194a97f58e60815517e0c8a7 Author: Chris Michael <[email protected]> Date: Tue Jan 6 13:01:31 2015 -0500 ecore-drm: Fix issue with TakeControl and ReleaseControl functions Summary: The dbus calls to TakeControl and ReleaseControl of a session are actual Methods that need to be setup and called in order to operate properly. As such, this commit fixes that issue by using the proper eldbus method calls, and fixes an issue where shutting down Enlightenment would lead to "cannot release control" error messages. @fix Signed-off-by: Chris Michael <[email protected]> --- src/lib/ecore_drm/ecore_drm_dbus.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/lib/ecore_drm/ecore_drm_dbus.c b/src/lib/ecore_drm/ecore_drm_dbus.c index 5106cf9..292879e 100644 --- a/src/lib/ecore_drm/ecore_drm_dbus.c +++ b/src/lib/ecore_drm/ecore_drm_dbus.c @@ -120,6 +120,8 @@ static Eina_Bool _ecore_drm_dbus_session_take(const char *session) { Eldbus_Proxy *proxy; + Eldbus_Message *msg, *reply; + const char *errname, *errmsg; if ((session) && (strcmp(session, dsession))) { @@ -135,9 +137,18 @@ _ecore_drm_dbus_session_take(const char *session) } /* send call to take control */ - if (eldbus_proxy_call(proxy, "TakeControl", NULL, NULL, -1, "b", EINA_FALSE)) + if (!(msg = eldbus_proxy_method_call_new(proxy, "TakeControl"))) + { + ERR("Could not create method call for proxy"); + return EINA_FALSE; + } + + eldbus_message_arguments_append(msg, "b", EINA_FALSE); + + reply = eldbus_proxy_send_and_block(proxy, msg, -1); + if (eldbus_message_error_get(reply, &errname, &errmsg)) { - ERR("Could not send message to proxy"); + ERR("Eldbus Message Error: %s %s", errname, errmsg); return EINA_FALSE; } @@ -148,6 +159,8 @@ static Eina_Bool _ecore_drm_dbus_session_release(const char *session) { Eldbus_Proxy *proxy; + Eldbus_Message *msg, *reply; + const char *errname, *errmsg; if ((session) && (strcmp(session, dsession))) { @@ -163,8 +176,18 @@ _ecore_drm_dbus_session_release(const char *session) } /* send call to release control */ - if (!eldbus_proxy_call(proxy, "ReleaseControl", NULL, NULL, -1, "")) - ERR("Could not send ReleaseControl message to proxy"); + if (!(msg = eldbus_proxy_method_call_new(proxy, "ReleaseControl"))) + { + ERR("Could not create method call for proxy"); + return EINA_FALSE; + } + + reply = eldbus_proxy_send_and_block(proxy, msg, -1); + if (eldbus_message_error_get(reply, &errname, &errmsg)) + { + ERR("Eldbus Message Error: %s %s", errname, errmsg); + return EINA_FALSE; + } return EINA_TRUE; } --
