* #33928: refactor recording callback
diff --git a/src/org/sflphone/model/BubblesView.java b/src/org/sflphone/model/BubblesView.java
index c53f18a..6c2923f 100644
--- a/src/org/sflphone/model/BubblesView.java
+++ b/src/org/sflphone/model/BubblesView.java
@@ -370,7 +370,8 @@
                     return true;

                 case Bubble.actions.RECORD:

                     try {

-                        callback.mCallbacks.getService().toggleRecordingCall(expand.getCallID());

+                        boolean isRecording = callback.mCallbacks.getService().toggleRecordingCall(expand.getCallID());

+                        ((BubbleUser) expand).associated_call.setRecording(isRecording);

                     } catch (RemoteException e1) {

                         e1.printStackTrace();

                     }

diff --git a/src/org/sflphone/model/Conference.java b/src/org/sflphone/model/Conference.java
index 9ff5570..3303d4b 100644
--- a/src/org/sflphone/model/Conference.java
+++ b/src/org/sflphone/model/Conference.java
@@ -146,7 +146,10 @@
     }
 
     public boolean isRecording() {
-        return recording;
+        if(hasMultipleParticipants())
+            return recording;
+        else
+            return participants.get(0).isRecording();
     }
 
     public boolean isOnGoing() {
diff --git a/src/org/sflphone/model/SipCall.java b/src/org/sflphone/model/SipCall.java
index 63989f5..f70649b 100644
--- a/src/org/sflphone/model/SipCall.java
+++ b/src/org/sflphone/model/SipCall.java
@@ -338,7 +338,7 @@
 
         public static SipCall buildMyselfCall(ContentResolver cr, String displayName) {
             return new SipCall("default", null, SipCall.state.CALL_TYPE_UNDETERMINED, state.CALL_STATE_NONE, state.MEDIA_STATE_NONE,
-                    CallContact.ContactBuilder.buildUserContact(cr, displayName));
+                    CallContact.ContactBuilder.buildUserContact(cr));
 
         }
 
diff --git a/src/org/sflphone/receivers/IncomingReceiver.java b/src/org/sflphone/receivers/IncomingReceiver.java
index 77c96ba..077be7c 100644
--- a/src/org/sflphone/receivers/IncomingReceiver.java
+++ b/src/org/sflphone/receivers/IncomingReceiver.java
@@ -270,27 +270,27 @@
 
             Log.i(TAG, "Received" + intent.getAction());
 
-            try {
-                if (callback.getCurrent_confs().get(intent.getStringExtra("id")) != null) {
-                    callback.getCurrent_confs().get(intent.getStringExtra("id")).setRecording(mBinder.isRecording(intent.getStringExtra("id")));
-                } else if (callback.getCurrent_calls().get(intent.getStringExtra("id")) != null) {
-                    callback.getCurrent_calls().get(intent.getStringExtra("id")).setRecording(mBinder.isRecording(intent.getStringExtra("id")));
-                } else {
-                    // A call in a conference has been put on hold
-                    Iterator<Conference> it = callback.getCurrent_confs().values().iterator();
-                    while (it.hasNext()) {
-                        Conference c = it.next();
-                        if (c.getCall(intent.getStringExtra("id")) != null)
-                            c.getCall(intent.getStringExtra("id")).setRecording(mBinder.isRecording(intent.getStringExtra("id")));
-                    }
-                }
-                // Re sending the same intent to the app
-                callback.sendBroadcast(intent);
-                ;
-            } catch (RemoteException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            }
+//            try {
+//                if (callback.getCurrent_confs().get(intent.getStringExtra("id")) != null) {
+//                    callback.getCurrent_confs().get(intent.getStringExtra("id")).setRecording(mBinder.isRecording(intent.getStringExtra("id")));
+//                } else if (callback.getCurrent_calls().get(intent.getStringExtra("id")) != null) {
+//                    callback.getCurrent_calls().get(intent.getStringExtra("id")).setRecording(mBinder.isRecording(intent.getStringExtra("id")));
+//                } else {
+//                    // A call in a conference has been put on hold
+//                    Iterator<Conference> it = callback.getCurrent_confs().values().iterator();
+//                    while (it.hasNext()) {
+//                        Conference c = it.next();
+//                        if (c.getCall(intent.getStringExtra("id")) != null)
+//                            c.getCall(intent.getStringExtra("id")).setRecording(mBinder.isRecording(intent.getStringExtra("id")));
+//                    }
+//                }
+//                // Re sending the same intent to the app
+//                callback.sendBroadcast(intent);
+//                ;
+//            } catch (RemoteException e) {
+//                // TODO Auto-generated catch block
+//                e.printStackTrace();
+//            }
 
         }
 
diff --git a/src/org/sflphone/service/ISipService.aidl b/src/org/sflphone/service/ISipService.aidl
index 572bf55..f93952f 100644
--- a/src/org/sflphone/service/ISipService.aidl
+++ b/src/org/sflphone/service/ISipService.aidl
@@ -41,7 +41,6 @@
     boolean toggleRecordingCall(in String id);
     boolean startRecordedFilePlayback(in String filepath);
 	void stopRecordedFilePlayback(in String filepath);
-	boolean isRecording(in String id);
 	
 	/* DTMF */
 	void playDtmf(in String key);
diff --git a/src/org/sflphone/service/SipService.java b/src/org/sflphone/service/SipService.java
index 732ee98..8f253f3 100644
--- a/src/org/sflphone/service/SipService.java
+++ b/src/org/sflphone/service/SipService.java
@@ -949,7 +949,22 @@
                 @Override
                 protected Boolean doRun() throws SameThreadException {
                     Log.i(TAG, "SipService.toggleRecordingCall() thread running...");
-                    return callManagerJNI.toggleRecording(id);
+                    boolean result = callManagerJNI.toggleRecording(id);
+                    
+                    if(getCurrent_calls().containsKey(id)){
+                        getCurrent_calls().get(id).setRecording(result);
+                    } else if(getCurrent_confs().containsKey(id)){
+                        getCurrent_confs().get(id).setRecording(result);
+                    } else {
+                        // A call in a conference has been put on hold
+                        Iterator<Conference> it = getCurrent_confs().values().iterator();
+                        while (it.hasNext()) {
+                            Conference c = it.next();
+                            if (c.getCall(id) != null)
+                                c.getCall(id).setRecording(result);
+                        }
+                    }
+                    return result;
                 }
             }
 
@@ -963,26 +978,6 @@
         }
 
         @Override
-        public boolean isRecording(final String id) throws RemoteException {
-            class IsRecording extends SipRunnableWithReturn {
-
-                @Override
-                protected Boolean doRun() throws SameThreadException {
-                    Log.i(TAG, "SipService.isRecording() thread running...");
-                    return callManagerJNI.getIsRecording(id);
-                }
-            }
-
-            IsRecording runInstance = new IsRecording();
-            getExecutor().execute(runInstance);
-            while (!runInstance.isDone()) {
-            }
-
-            return (Boolean) runInstance.getVal();
-
-        }
-
-        @Override
         public boolean startRecordedFilePlayback(final String filepath) throws RemoteException {
             getExecutor().execute(new SipRunnable() {
                 @Override