From 204e218bb0990a78caaa06d74728ddd175c7b50a Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 2 Mar 2018 20:51:54 +0100 Subject: [PATCH] Fix : move Cpu lock and so on into the Call object. There are not needed for INVITE sessions without media (like group chat), and they cause important battery drain because the phone will stay awake all the time since the INVITE session never BYEs. --- src/call/call.cpp | 15 +++++++++++++++ src/conference/session/call-session.cpp | 11 ----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/call/call.cpp b/src/call/call.cpp index 9cd36d9ed..797eee31a 100644 --- a/src/call/call.cpp +++ b/src/call/call.cpp @@ -285,6 +285,21 @@ void CallPrivate::onCallSessionStartReferred (const shared_ptr &ses void CallPrivate::onCallSessionStateChanged (const shared_ptr &session, CallSession::State state, const string &message) { L_Q(); + switch(state){ + case CallSession::State::OutgoingInit: + case CallSession::State::IncomingReceived: + getPlatformHelpers(q->getCore()->getCCore())->acquireWifiLock(); + getPlatformHelpers(q->getCore()->getCCore())->acquireMcastLock(); + getPlatformHelpers(q->getCore()->getCCore())->acquireCpuLock(); + break; + case CallSession::State::Released: + getPlatformHelpers(q->getCore()->getCCore())->releaseWifiLock(); + getPlatformHelpers(q->getCore()->getCCore())->releaseMcastLock(); + getPlatformHelpers(q->getCore()->getCCore())->releaseCpuLock(); + break; + default: + break; + } linphone_call_notify_state_changed(L_GET_C_BACK_PTR(q), static_cast(state), message.c_str()); } diff --git a/src/conference/session/call-session.cpp b/src/conference/session/call-session.cpp index 04fb89a3f..035f66841 100644 --- a/src/conference/session/call-session.cpp +++ b/src/conference/session/call-session.cpp @@ -86,12 +86,6 @@ void CallSessionPrivate::setState (CallSession::State newState, const string &me } switch (newState) { - case CallSession::State::OutgoingInit: - case CallSession::State::IncomingReceived: - getPlatformHelpers(q->getCore()->getCCore())->acquireWifiLock(); - getPlatformHelpers(q->getCore()->getCCore())->acquireMcastLock(); - getPlatformHelpers(q->getCore()->getCCore())->acquireCpuLock(); - break; case CallSession::State::End: case CallSession::State::Error: switch (linphone_error_info_get_reason(q->getErrorInfo())) { @@ -129,11 +123,6 @@ void CallSessionPrivate::setState (CallSession::State newState, const string &me log->status = LinphoneCallSuccess; log->connected_date_time = ms_time(nullptr); break; - case CallSession::State::Released: - getPlatformHelpers(q->getCore()->getCCore())->releaseWifiLock(); - getPlatformHelpers(q->getCore()->getCCore())->releaseMcastLock(); - getPlatformHelpers(q->getCore()->getCCore())->releaseCpuLock(); - break; default: break; }