diff --git a/src/call/call-p.h b/src/call/call-p.h index 94ec4cf07..71eb8fa41 100644 --- a/src/call/call-p.h +++ b/src/call/call-p.h @@ -24,6 +24,7 @@ #include "conference/conference.h" #include "conference/session/call-session-listener.h" #include "object/object-p.h" +#include "utils/background-task.h" // TODO: Remove me later. #include "private.h" @@ -113,11 +114,11 @@ private: CallCallbackObj nextVideoFrameDecoded; - unsigned long backgroundTaskId = 0; - bool ringingBeep = false; bool playingRingbackTone = false; + BackgroundTask bgTask; + L_DECLARE_PUBLIC(Call); }; diff --git a/src/call/call.cpp b/src/call/call.cpp index 4e00dcf2b..973e352e3 100644 --- a/src/call/call.cpp +++ b/src/call/call.cpp @@ -186,14 +186,11 @@ void CallPrivate::onAckReceived (const shared_ptr &session, L } void CallPrivate::onBackgroundTaskToBeStarted (const shared_ptr &session) { - backgroundTaskId = sal_begin_background_task("liblinphone call notification", nullptr, nullptr); + bgTask.start(); } void CallPrivate::onBackgroundTaskToBeStopped (const shared_ptr &session) { - if (backgroundTaskId != 0) { - sal_end_background_task(backgroundTaskId); - backgroundTaskId = 0; - } + bgTask.stop(); } bool CallPrivate::onCallSessionAccepted (const shared_ptr &session) { @@ -468,6 +465,8 @@ Call::Call (CallPrivate &p, shared_ptr core) : Object(p), CoreAccessor(cor L_D(); d->nextVideoFrameDecoded._func = nullptr; d->nextVideoFrameDecoded._user_data = nullptr; + + d->bgTask.setName("Liblinphone call notification"); } // ----------------------------------------------------------------------------- diff --git a/src/chat/modifier/file-transfer-chat-message-modifier.cpp b/src/chat/modifier/file-transfer-chat-message-modifier.cpp index 30d088d2c..951efa582 100644 --- a/src/chat/modifier/file-transfer-chat-message-modifier.cpp +++ b/src/chat/modifier/file-transfer-chat-message-modifier.cpp @@ -35,6 +35,10 @@ using namespace std; LINPHONE_BEGIN_NAMESPACE +FileTransferChatMessageModifier::FileTransferChatMessageModifier () { + bgTask.setName("File transfer upload"); +} + belle_http_request_t *FileTransferChatMessageModifier::getHttpRequest () const { return httpRequest; } @@ -480,29 +484,12 @@ error: return -1; } -static void _chat_message_file_upload_background_task_ended (void *data) { - FileTransferChatMessageModifier *d = (FileTransferChatMessageModifier *)data; - d->fileUploadBackgroundTaskEnded(); -} - -void FileTransferChatMessageModifier::fileUploadBackgroundTaskEnded () { - lWarning() << "channel [" << this << "]: file upload background task has to be ended now, but work isn't finished."; - fileUploadEndBackgroundTask(); -} - void FileTransferChatMessageModifier::fileUploadBeginBackgroundTask () { - if (backgroundTaskId == 0) { - backgroundTaskId = sal_begin_background_task("file transfer upload", _chat_message_file_upload_background_task_ended, this); - if (backgroundTaskId) lInfo() << "channel [" << this << "]: starting file upload background task with id=[" << backgroundTaskId << "]."; - } + bgTask.start(); } void FileTransferChatMessageModifier::fileUploadEndBackgroundTask () { - if (backgroundTaskId) { - lInfo() << "channel [" << this << "]: ending file upload background task with id=[" << backgroundTaskId << "]."; - sal_end_background_task(backgroundTaskId); - backgroundTaskId = 0; - } + bgTask.stop(); } // ---------------------------------------------------------- diff --git a/src/chat/modifier/file-transfer-chat-message-modifier.h b/src/chat/modifier/file-transfer-chat-message-modifier.h index c711285d5..d79b5bdc2 100644 --- a/src/chat/modifier/file-transfer-chat-message-modifier.h +++ b/src/chat/modifier/file-transfer-chat-message-modifier.h @@ -23,6 +23,7 @@ #include #include "chat-message-modifier.h" +#include "utils/background-task.h" // ============================================================================= @@ -35,7 +36,7 @@ class FileTransferContent; class FileTransferChatMessageModifier : public ChatMessageModifier { public: - FileTransferChatMessageModifier () = default; + FileTransferChatMessageModifier (); ~FileTransferChatMessageModifier (); Result encode (const std::shared_ptr &message, int &errorCode) override; @@ -64,18 +65,20 @@ public: bool isFileTransferInProgressAndValid(); private: - std::weak_ptr chatMessage; - FileContent* currentFileContentToTransfer; - unsigned long backgroundTaskId = 0; - belle_http_request_t *httpRequest = nullptr; - belle_http_request_listener_t *httpListener = nullptr; - int uploadFile(); int startHttpTransfer(const std::string &url, const std::string &action, belle_http_request_listener_callbacks_t *cbs); void fileUploadBeginBackgroundTask(); void fileUploadEndBackgroundTask(); void releaseHttpRequest(); + + std::weak_ptr chatMessage; + FileContent* currentFileContentToTransfer; + + belle_http_request_t *httpRequest = nullptr; + belle_http_request_listener_t *httpListener = nullptr; + + BackgroundTask bgTask; }; LINPHONE_END_NAMESPACE