summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-02-06 12:14:15 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-02-06 12:14:15 +0000
commit13f5bc141a0f534d824185ceab4aa0e0ee54b2ec (patch)
treea087341ed0c25c3cfcad47bf8dce3d3d71a59a34
parent25b955a2b88645c3a080e74eecdea4d09ff28357 (diff)
Ticket #695: Inserted wait loop between stop() & close() of APS client session to allow 'APS server' performs clean stop (it is APS server who suffers panic KERN-EXEC 0).
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2443 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/pjmedia/symbian_sound_aps.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/pjmedia/src/pjmedia/symbian_sound_aps.cpp b/pjmedia/src/pjmedia/symbian_sound_aps.cpp
index 6a8976b2..ea419c51 100644
--- a/pjmedia/src/pjmedia/symbian_sound_aps.cpp
+++ b/pjmedia/src/pjmedia/symbian_sound_aps.cpp
@@ -367,6 +367,18 @@ CPjAudioEngine::~CPjAudioEngine()
delete iRecCommHandler;
iRecCommHandler = NULL;
+ // On some devices, immediate closing after stopping may cause APS server
+ // panic KERN-EXEC 0, so let's wait for sometime before really closing
+ // the client session.
+ TTime start, now;
+ enum { APS_CLOSE_WAIT_TIME = 200 }; /* in msecs */
+
+ start.UniversalTime();
+ do {
+ pj_symbianos_poll(-1, APS_CLOSE_WAIT_TIME);
+ now.UniversalTime();
+ } while (now.MicroSecondsFrom(start) < APS_CLOSE_WAIT_TIME * 1000);
+
iSession.Close();
if (state_ == STATE_READY) {