* #32662: start and finish daemon from ExecutorThread
diff --git a/src/org/sflphone/service/SipService.java b/src/org/sflphone/service/SipService.java
index 1fe1acf..7d8eb66 100644
--- a/src/org/sflphone/service/SipService.java
+++ b/src/org/sflphone/service/SipService.java
@@ -81,11 +81,9 @@
public SipNotifications notificationManager;
public MediaManager mediaManager;
-
private HashMap<String, SipCall> current_calls = new HashMap<String, SipCall>();
private HashMap<String, Conference> current_confs = new HashMap<String, Conference>();
private IncomingReceiver receiver;
-
public HashMap<String, Conference> getCurrent_confs() {
return current_confs;
@@ -97,9 +95,9 @@
Log.i(TAG, "onUnbind(intent)");
return true;
}
-
+
@Override
- public void onRebind(Intent i){
+ public void onRebind(Intent i) {
super.onRebind(i);
}
@@ -109,7 +107,6 @@
Log.i(TAG, "onCreated");
super.onCreate();
-
IntentFilter callFilter = new IntentFilter(CallManagerCallBack.CALL_STATE_CHANGED);
callFilter.addAction(CallManagerCallBack.INCOMING_CALL);
callFilter.addAction(CallManagerCallBack.NEW_CALL_CREATED);
@@ -127,10 +124,10 @@
notificationManager = new SipNotifications(this);
mediaManager = new MediaManager(this);
-
+
notificationManager.onServiceCreate();
mediaManager.startService();
-
+
}
/* called for each startService() */
@@ -141,7 +138,6 @@
receiver = new IncomingReceiver(this, mBinder);
-
return START_STICKY; /* started and stopped explicitly */
}
@@ -149,13 +145,13 @@
public void onDestroy() {
Log.i(TAG, "onDestroyed");
/* called once by stopService() */
-
+
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);
notificationManager.onServiceDestroy();
// sflphoneApp.setServiceRunning(false);
- managerImpl.finish();
+ getExecutor().execute(new FinalizeRunnable());
super.onDestroy();
}
@@ -165,7 +161,7 @@
Log.i(TAG, "onBound");
return mBinder;
}
-
+
private static Looper createLooper() {
if (executorThread == null) {
Log.d(TAG, "Creating new handler thread");
@@ -216,6 +212,13 @@
}
}
}
+
+ private void stopDaemon(){
+ if(managerImpl != null){
+ managerImpl.finish();
+ isPjSipStackStarted = false;
+ }
+ }
private void startPjSipStack() throws SameThreadException {
if (isPjSipStackStarted)
@@ -249,14 +252,14 @@
return;
} catch (Exception e) {
Log.e(TAG, "Problem with the current Pj stack...", e);
+ isPjSipStackStarted = false;
}
Log.i(TAG, "PjSIPStack started");
managerImpl = SFLPhoneservice.instance();
/* set static AppPath before calling manager.init */
-
- // managerImpl.setPath(sflphoneApp.getAppPath());
+// managerImpl.setPath(getApplication().getFilesDir().getAbsolutePath());
callManagerJNI = new CallManager();
callManagerCallBack = new CallManagerCallBack(this);
@@ -265,12 +268,9 @@
configurationManagerJNI = new ConfigurationManager();
configurationManagerCallback = new ConfigurationManagerCallback(this);
SFLPhoneservice.setConfigurationCallbackObject(configurationManagerCallback);
-
- Log.i(TAG, "before init");
managerImpl.init("");
Log.i(TAG, "->startPjSipStack");
-
}
public HashMap<String, SipCall> getCurrent_calls() {
@@ -332,6 +332,13 @@
startPjSipStack();
}
}
+
+ class FinalizeRunnable extends SipRunnable {
+ @Override
+ protected void doRun() throws SameThreadException {
+ stopDaemon();
+ }
+ }
/* ************************************
*
@@ -1258,23 +1265,22 @@
};
-
public void changeVolume(int currentVolume) {
-// StringVect resultsInput = configurationManagerJNI.getAudioInputDeviceList();
-// StringVect resultsOutput = configurationManagerJNI.getAudioOutputDeviceList();
-//
-// Log.i(TAG, "------------------> INPUT DEVICES");
-// for(int i = 0 ; i < resultsInput.size(); ++i){
-// Log.i(TAG, resultsInput.get(i));
-// }
-//
-// Log.i(TAG, "------------------> OUTPUT DEVICES");
-// for(int i = 0 ; i < resultsOutput.size(); ++i){
-// Log.i(TAG, resultsOutput.get(i));
-// }
-
-// Log.i(TAG,"AudioManager ------------> "+configurationManagerJNI.getAudioManager());
-
+ // StringVect resultsInput = configurationManagerJNI.getAudioInputDeviceList();
+ // StringVect resultsOutput = configurationManagerJNI.getAudioOutputDeviceList();
+ //
+ // Log.i(TAG, "------------------> INPUT DEVICES");
+ // for(int i = 0 ; i < resultsInput.size(); ++i){
+ // Log.i(TAG, resultsInput.get(i));
+ // }
+ //
+ // Log.i(TAG, "------------------> OUTPUT DEVICES");
+ // for(int i = 0 ; i < resultsOutput.size(); ++i){
+ // Log.i(TAG, resultsOutput.get(i));
+ // }
+
+ // Log.i(TAG,"AudioManager ------------> "+configurationManagerJNI.getAudioManager());
+
callManagerJNI.setVolume("speaker", currentVolume);
}
}