summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/voicecall.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/voicecall.c b/src/voicecall.c
index eff6321b..1be907a4 100644
--- a/src/voicecall.c
+++ b/src/voicecall.c
@@ -835,11 +835,31 @@ static DBusMessage *manager_transfer(DBusConnection *conn,
return NULL;
}
+static DBusMessage *manager_swap_without_accept(DBusConnection *conn,
+ DBusMessage *msg, void *data)
+{
+ struct ofono_voicecall *vc = data;
+
+ if (vc->flags & VOICECALLS_FLAG_PENDING)
+ return __ofono_error_busy(msg);
+
+ vc->flags |= VOICECALLS_FLAG_PENDING;
+ vc->pending = dbus_message_ref(msg);
+
+ vc->driver->swap_without_accept(vc, generic_callback, vc);
+
+ return NULL;
+}
+
+
static DBusMessage *manager_swap_calls(DBusConnection *conn,
DBusMessage *msg, void *data)
{
struct ofono_voicecall *vc = data;
+ if (vc->driver->swap_without_accept)
+ return manager_swap_without_accept(conn, msg, data);
+
if (vc->flags & VOICECALLS_FLAG_PENDING)
return __ofono_error_busy(msg);