summaryrefslogtreecommitdiff
path: root/service/src/com
diff options
context:
space:
mode:
authorbodamnam <bodamnam@google.com>2022-11-28 01:26:07 +0000
committerBodam Nam <bodamnam@google.com>2022-11-29 04:54:04 +0000
commit138e273f46181d5f0c6c73292548a579a0300ba9 (patch)
tree3a6dc22edded0cd41a3c8dabc1481e7e98e90985 /service/src/com
parente14a3ae20a2aa923ca54abbcc82276528e90a313 (diff)
downloadImsMedia-138e273f46181d5f0c6c73292548a579a0300ba9.tar.gz
Fix jni interface to use session Id in listener
The current audio session response from ImsMedia native is not reached to the listener in java when the multiple sessions are created with same media type. This CL fixes it by using the session Id as a key to distinguish the sessions in listener container. Bug: 260520127 Test: Voice multi session call, Video/Rtt call test with device, atest ImsMediaNativeTests, ImsMediaJavaUnitTests Change-Id: Ied1b4858c7ec145e65479e9f8192b51514628732
Diffstat (limited to 'service/src/com')
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioListener.java3
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioService.java8
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioSession.java3
-rw-r--r--service/src/com/android/telephony/imsmedia/ImsMediaController.java1
-rw-r--r--service/src/com/android/telephony/imsmedia/JNIImsMediaService.java72
-rw-r--r--service/src/com/android/telephony/imsmedia/TextListener.java3
-rw-r--r--service/src/com/android/telephony/imsmedia/TextService.java4
-rw-r--r--service/src/com/android/telephony/imsmedia/TextSession.java2
-rw-r--r--service/src/com/android/telephony/imsmedia/VideoListener.java3
-rw-r--r--service/src/com/android/telephony/imsmedia/VideoService.java4
-rw-r--r--service/src/com/android/telephony/imsmedia/VideoSession.java2
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/BaseManager.cpp8
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp26
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/BaseManager.h8
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextManager.cpp15
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoManager.cpp24
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/jni/libimsmediajni.cpp7
17 files changed, 92 insertions, 101 deletions
diff --git a/service/src/com/android/telephony/imsmedia/AudioListener.java b/service/src/com/android/telephony/imsmedia/AudioListener.java
index f0d40672..81973c72 100644
--- a/service/src/com/android/telephony/imsmedia/AudioListener.java
+++ b/service/src/com/android/telephony/imsmedia/AudioListener.java
@@ -32,6 +32,7 @@ public class AudioListener implements JNIImsMediaListener {
private long mNativeObject;
AudioListener(final Handler handler) {
+ Log.d(TAG, "AudioListener() -" + AudioListener.this);
mHandler = handler;
}
@@ -62,7 +63,7 @@ public class AudioListener implements JNIImsMediaListener {
@Override
public void onMessage(final Parcel parcel) {
final int event = parcel.readInt();
- Log.d(TAG, "onMessage() event=" + event);
+ Log.d(TAG, "onMessage() -" + AudioListener.this + ", event=" + event);
switch (event) {
case AudioSession.EVENT_OPEN_SESSION_SUCCESS:
final int sessionId = parcel.readInt();
diff --git a/service/src/com/android/telephony/imsmedia/AudioService.java b/service/src/com/android/telephony/imsmedia/AudioService.java
index 15ed50bc..6f913c1c 100644
--- a/service/src/com/android/telephony/imsmedia/AudioService.java
+++ b/service/src/com/android/telephony/imsmedia/AudioService.java
@@ -43,7 +43,6 @@ public class AudioService {
/** Sets JNI listener to get JNI callback from libimsmediajni library*/
public void setListener(final AudioListener listener) {
mListener = listener;
- JNIImsMediaService.setListener(mNativeObject, mListener);
}
/**
@@ -76,9 +75,12 @@ public class AudioService {
* RTP packets and RtpConfig to create session.
*/
public void openSession(final int sessionId, final OpenSessionParams sessionParams) {
- if (sessionParams == null) return;
+ if (mNativeObject == 0 || sessionParams == null) {
+ return;
+ }
+ JNIImsMediaService.setListener(sessionId, mListener);
Log.d(LOG_TAG, "openSession: sessionId = " + sessionId
- + "," + sessionParams.getRtpConfig());
+ + "," + sessionParams.getRtpConfig());
Parcel parcel = Parcel.obtain();
parcel.writeInt(AudioSession.CMD_OPEN_SESSION);
final int socketFdRtp = sessionParams.getRtpFd().detachFd();
diff --git a/service/src/com/android/telephony/imsmedia/AudioSession.java b/service/src/com/android/telephony/imsmedia/AudioSession.java
index 59d23fe3..2fc668e9 100644
--- a/service/src/com/android/telephony/imsmedia/AudioSession.java
+++ b/service/src/com/android/telephony/imsmedia/AudioSession.java
@@ -238,7 +238,7 @@ public final class AudioSession extends IImsAudioSession.Stub implements IMediaS
@Override
public void handleMessage (Message msg) {
- Log.d(TAG, "handleMessage: " + msg.what);
+ Log.d(TAG, "handleMessage() -" + AudioSessionHandler.this + ", " + msg.what);
switch(msg.what) {
case CMD_OPEN_SESSION:
handleOpenSession((OpenSessionParams)msg.obj);
@@ -334,7 +334,6 @@ public final class AudioSession extends IImsAudioSession.Stub implements IMediaS
if (isAudioOffload()) {
mOffloadService.closeSession(mSessionId);
} else {
- Log.d(TAG, "handleCloseSession else");
mAudioService.closeSession(mSessionId);
}
}
diff --git a/service/src/com/android/telephony/imsmedia/ImsMediaController.java b/service/src/com/android/telephony/imsmedia/ImsMediaController.java
index 6b43999a..fb7fe810 100644
--- a/service/src/com/android/telephony/imsmedia/ImsMediaController.java
+++ b/service/src/com/android/telephony/imsmedia/ImsMediaController.java
@@ -154,6 +154,7 @@ public class ImsMediaController extends Service {
mImsMediaBinder.closeSession((IBinder) mSessions.valueAt(0));
mSessions.removeAt(0);
}
+ JNIImsMediaService.clearListener();
mSessions.clear();
}
} catch (Exception e) {
diff --git a/service/src/com/android/telephony/imsmedia/JNIImsMediaService.java b/service/src/com/android/telephony/imsmedia/JNIImsMediaService.java
index 6bbbbb02..ca88b021 100644
--- a/service/src/com/android/telephony/imsmedia/JNIImsMediaService.java
+++ b/service/src/com/android/telephony/imsmedia/JNIImsMediaService.java
@@ -21,6 +21,8 @@ import android.os.Parcel;
import android.util.Log;
import android.view.Surface;
+import androidx.annotation.VisibleForTesting;
+
import java.util.Hashtable;
/** JNI interface class to send message to libimsmediajni */
@@ -30,8 +32,8 @@ public class JNIImsMediaService {
private final Object mLock = new Object();
/** for media service based on type ex. audio, video, rtt */
- private static Hashtable<Long, JNIImsMediaListener> sListeners
- = new Hashtable<Long, JNIImsMediaListener>();
+ private static Hashtable<Integer, JNIImsMediaListener> sListeners =
+ new Hashtable<Integer, JNIImsMediaListener>();
/**
* Gets instance object of BaseManager with the corresponding media type
@@ -45,29 +47,29 @@ public class JNIImsMediaService {
* Send message to libimsmediajni to libimsmedia library to operate with corresponding
* arguments
*
- * @param nativeObj An unique object identifier of BaseManager to operate
+ * @param nativeObject An unique object identifier of BaseManager to operate
* @param sessionId An unique session identifier
* @param baData A parameter to operate session
*/
- public static native void sendMessage(long nativeObj, int sessionId, byte[] baData);
+ public static native void sendMessage(long nativeObject, int sessionId, byte[] baData);
/**
* Set preview surface to libimsmediajni and it delivers libimsmedia
*
- * @param nativeObj An unique object identifier of BaseManager to operate
+ * @param nativeObject An unique object identifier of BaseManager to operate
* @param sessionId An unique session identifier
* @param surface A preview surface
*/
- public static native void setPreviewSurface(long nativeObj, int sessionId, Surface surface);
+ public static native void setPreviewSurface(long nativeObject, int sessionId, Surface surface);
/**
* Set display surface to libimsmediajni and it delivers libimsmedia
*
- * @param nativeObj An unique object identifier of BaseManager to operate
+ * @param nativeObject An unique object identifier of BaseManager to operate
* @param sessionId An unique session identifier
* @param surface A display surface
*/
- public static native void setDisplaySurface(long nativeObj, int sessionId, Surface surface);
+ public static native void setDisplaySurface(long nativeObject, int sessionId, Surface surface);
/**
* Generates SPROP list for the given set of video configurations.
@@ -108,57 +110,67 @@ public class JNIImsMediaService {
/**
* Sets listener to get callback from libimsmediajni
*
- * @param nativeObj An unique object identifier of BaseManager to use as a key to
- * acquire a paired listener
+ * @param sessionId An unique object identifier the session to use as a key to acquire a paired
+ * listener
* @param listener A listener to set for getting messages
*/
- public static void setListener(final long nativeObj, final JNIImsMediaListener listener) {
- Log.d(TAG, "setListener");
- if (nativeObj == 0 || listener == null) {
+ public static void setListener(final int sessionId, final JNIImsMediaListener listener) {
+ Log.d(TAG, "setListener() - sessionId=" + sessionId);
+ if (listener == null) {
+ Log.e(TAG, "setListener() - null listener");
return;
}
- Long key = Long.valueOf(nativeObj);
synchronized (sListeners) {
- sListeners.put(key, listener);
+ sListeners.put(sessionId, listener);
}
}
/**
* Gets a listener with the key to match
*
- * @param nativeObj An unique key identifier to get the paired listener
+ * @param sessionId An unique key identifier to get the paired listener
* @return A JNIImsMediaListener listener
*/
- public static JNIImsMediaListener getListener(final long nativeObj) {
- Log.d(TAG, "getListener");
- if (nativeObj == 0) {
- return null;
- }
- Long key = Long.valueOf(nativeObj);
+ public static JNIImsMediaListener getListener(final int sessionId) {
JNIImsMediaListener listener = null;
synchronized (sListeners) {
- listener = sListeners.get(key);
+ listener = sListeners.get(sessionId);
}
return listener;
}
/**
+ * Clears listener container
+ */
+ public static void clearListener() {
+ synchronized (sListeners) {
+ sListeners.clear();
+ }
+ }
+
+ @VisibleForTesting
+ public static int getListenerSize() {
+ return sListeners.size();
+ }
+
+ /**
* Sends callback parcel message from libimsmediajni to java
*
- * @param nativeObj An unique key idenfier to find corresponding listener object to send message
+ * @param sessionId An unique key idenfier to find corresponding listener object to send message
* @param baData byte array form of data to send
* @return 1 if it is success to send data, -1 when it fails
*/
- public static int sendData2Java(final long nativeObj, final byte[] baData) {
- Log.d(TAG, "sendData2Java");
- JNIImsMediaListener listener = getListener(nativeObj);
-
+ public static int sendData2Java(final int sessionId, final byte[] baData) {
+ Log.d(TAG, "sendData2Java() - sessionId=" + sessionId);
+ JNIImsMediaListener listener = getListener(sessionId);
if (listener == null) {
- Log.e(TAG, "No listener :: nativeObject=" + nativeObj);
+ Log.e(TAG, "No listener :: sessionId=" + sessionId);
+ return -1;
+ }
+ if (baData == null) {
return -1;
}
-
// retrieve parcel object from pool
Parcel parcel = Parcel.obtain();
parcel.unmarshall(baData, 0, baData.length);
diff --git a/service/src/com/android/telephony/imsmedia/TextListener.java b/service/src/com/android/telephony/imsmedia/TextListener.java
index c0182c4c..f7018962 100644
--- a/service/src/com/android/telephony/imsmedia/TextListener.java
+++ b/service/src/com/android/telephony/imsmedia/TextListener.java
@@ -31,6 +31,7 @@ public class TextListener implements JNIImsMediaListener {
private long mNativeObject;
TextListener(final Handler handler) {
+ Log.d(TAG, "TextListener() -" + TextListener.this);
mHandler = handler;
}
@@ -61,7 +62,7 @@ public class TextListener implements JNIImsMediaListener {
@Override
public void onMessage(final Parcel parcel) {
final int event = parcel.readInt();
- Log.d(TAG, "onMessage=" + event);
+ Log.d(TAG, "onMessage() -" + TextListener.this + ", event=" + event);
switch (event) {
case TextSession.EVENT_OPEN_SESSION_SUCCESS:
final int sessionId = parcel.readInt();
diff --git a/service/src/com/android/telephony/imsmedia/TextService.java b/service/src/com/android/telephony/imsmedia/TextService.java
index 33bd33f7..858c5c50 100644
--- a/service/src/com/android/telephony/imsmedia/TextService.java
+++ b/service/src/com/android/telephony/imsmedia/TextService.java
@@ -43,7 +43,6 @@ public class TextService {
/** Sets JNI listener to get JNI callback from libimsmediajni library */
public void setListener(final TextListener listener) {
mListener = listener;
- JNIImsMediaService.setListener(mNativeObject, mListener);
}
/**
@@ -75,9 +74,10 @@ public class TextService {
* packets and RtpConfig to create session.
*/
public void openSession(final int sessionId, final OpenSessionParams sessionParams) {
- if (sessionParams == null) {
+ if (mNativeObject == 0 || sessionParams == null) {
return;
}
+ JNIImsMediaService.setListener(sessionId, mListener);
Log.d(LOG_TAG, "openSession: sessionId = " + sessionId
+ "," + sessionParams.getRtpConfig());
Parcel parcel = Parcel.obtain();
diff --git a/service/src/com/android/telephony/imsmedia/TextSession.java b/service/src/com/android/telephony/imsmedia/TextSession.java
index 8accf840..15d600b1 100644
--- a/service/src/com/android/telephony/imsmedia/TextSession.java
+++ b/service/src/com/android/telephony/imsmedia/TextSession.java
@@ -155,7 +155,7 @@ public final class TextSession extends IImsTextSession.Stub implements IMediaSes
@Override
public void handleMessage(Message msg) {
- Log.d(TAG, "handleMessage: " + msg.what);
+ Log.d(TAG, "handleMessage() -" + TextSessionHandler.this + ", " + msg.what);
switch (msg.what) {
case CMD_OPEN_SESSION:
handleOpenSession((OpenSessionParams) msg.obj);
diff --git a/service/src/com/android/telephony/imsmedia/VideoListener.java b/service/src/com/android/telephony/imsmedia/VideoListener.java
index 1fe2e638..4c8a7f8d 100644
--- a/service/src/com/android/telephony/imsmedia/VideoListener.java
+++ b/service/src/com/android/telephony/imsmedia/VideoListener.java
@@ -31,6 +31,7 @@ public class VideoListener implements JNIImsMediaListener {
private long mNativeObject;
VideoListener(final Handler handler) {
+ Log.d(TAG, "VideoListener() -" + VideoListener.this);
mHandler = handler;
}
@@ -61,7 +62,7 @@ public class VideoListener implements JNIImsMediaListener {
@Override
public void onMessage(final Parcel parcel) {
final int event = parcel.readInt();
- Log.d(TAG, "onMessage() event=" + event);
+ Log.d(TAG, "onMessage() -" + VideoListener.this + ", event=" + event);
switch (event) {
case VideoSession.EVENT_OPEN_SESSION_SUCCESS:
final int sessionId = parcel.readInt();
diff --git a/service/src/com/android/telephony/imsmedia/VideoService.java b/service/src/com/android/telephony/imsmedia/VideoService.java
index 661f5aa9..2b6fd6c3 100644
--- a/service/src/com/android/telephony/imsmedia/VideoService.java
+++ b/service/src/com/android/telephony/imsmedia/VideoService.java
@@ -43,7 +43,6 @@ public class VideoService {
/** Sets JNI listener to get JNI callback from libimsmediajni library*/
public void setListener(final VideoListener listener) {
mListener = listener;
- JNIImsMediaService.setListener(mNativeObject, mListener);
}
/**
@@ -76,9 +75,10 @@ public class VideoService {
* RTP packets and RtpConfig to create session.
*/
public void openSession(final int sessionId, final OpenSessionParams sessionParams) {
- if (sessionParams == null) {
+ if (mNativeObject == 0 || sessionParams == null) {
return;
}
+ JNIImsMediaService.setListener(sessionId, mListener);
Log.d(LOG_TAG, "openSession: sessionId = " + sessionId
+ "," + sessionParams.getRtpConfig());
Parcel parcel = Parcel.obtain();
diff --git a/service/src/com/android/telephony/imsmedia/VideoSession.java b/service/src/com/android/telephony/imsmedia/VideoSession.java
index 998f080b..4450e215 100644
--- a/service/src/com/android/telephony/imsmedia/VideoSession.java
+++ b/service/src/com/android/telephony/imsmedia/VideoSession.java
@@ -185,7 +185,7 @@ public final class VideoSession extends IImsVideoSession.Stub implements IMediaS
@Override
public void handleMessage(Message msg) {
- Log.d(TAG, "handleMessage: " + msg.what);
+ Log.d(TAG, "handleMessage() -" + VideoSessionHandler.this + ", " + msg.what);
switch(msg.what) {
case CMD_OPEN_SESSION:
handleOpenSession((OpenSessionParams) msg.obj);
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/BaseManager.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/BaseManager.cpp
index 551e1b82..b7ea6617 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/BaseManager.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/BaseManager.cpp
@@ -17,8 +17,6 @@
#include <BaseManager.h>
#include <ImsMediaTrace.h>
-std::function<int(long, const android::Parcel&)> BaseManager::mCallback;
-
BaseManager::BaseManager()
{
mCallback = NULL;
@@ -30,16 +28,16 @@ void BaseManager::setCallback(CBManager pfnCallback)
{
if (mCallback == NULL)
{
- IMLOGD0("[setCallback]");
+ IMLOGI0("[setCallback]");
mCallback = std::bind(pfnCallback, std::placeholders::_1, std::placeholders::_2);
}
}
-int BaseManager::sendResponse(long obj, const android::Parcel& parcel)
+int BaseManager::sendResponse(int sessionId, const android::Parcel& parcel)
{
if (mCallback != NULL)
{
- return mCallback(obj, parcel);
+ return mCallback(sessionId, parcel);
}
return -1;
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp
index 0c440ac1..96f3ca5a 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioManager.cpp
@@ -423,8 +423,7 @@ void AudioManager::ResponseHandler::processEvent(
// fail reason
parcel.writeInt32(static_cast<int>(paramA));
}
- AudioManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(AudioManager::getInstance()), parcel);
+ AudioManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kAudioModifySessionResponse: // fall through
case kAudioAddConfigResponse: // fall through
@@ -436,9 +435,7 @@ void AudioManager::ResponseHandler::processEvent(
if (config != NULL)
{
config->writeToParcel(&parcel);
-
- AudioManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(AudioManager::getInstance()), parcel);
+ AudioManager::getInstance()->sendResponse(sessionId, parcel);
delete config;
}
}
@@ -450,8 +447,7 @@ void AudioManager::ResponseHandler::processEvent(
if (config != NULL)
{
config->writeToParcel(&parcel);
- AudioManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(AudioManager::getInstance()), parcel);
+ AudioManager::getInstance()->sendResponse(sessionId, parcel);
delete config;
}
}
@@ -462,20 +458,17 @@ void AudioManager::ResponseHandler::processEvent(
case kAudioMediaInactivityInd:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(paramA)); // type
- AudioManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(AudioManager::getInstance()), parcel);
+ AudioManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kAudioPacketLossInd:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(paramA)); // loss rate
- AudioManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(AudioManager::getInstance()), parcel);
+ AudioManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kAudioJitterInd:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(paramA)); // jitter
- AudioManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(AudioManager::getInstance()), parcel);
+ AudioManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kAudioTriggerAnbrQueryInd:
case kAudioDtmfReceivedInd:
@@ -488,9 +481,7 @@ void AudioManager::ResponseHandler::processEvent(
if (quality != NULL)
{
quality->writeToParcel(&parcel);
-
- AudioManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(AudioManager::getInstance()), parcel);
+ AudioManager::getInstance()->sendResponse(sessionId, parcel);
delete quality;
}
}
@@ -498,8 +489,7 @@ void AudioManager::ResponseHandler::processEvent(
case kAudioSessionClosed:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(sessionId));
- AudioManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(AudioManager::getInstance()), parcel);
+ AudioManager::getInstance()->sendResponse(sessionId, parcel);
break;
default:
break;
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/BaseManager.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/BaseManager.h
index e732cd11..7ddb0a06 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/BaseManager.h
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/BaseManager.h
@@ -20,7 +20,7 @@
#include <binder/Parcel.h>
#include <functional>
-typedef int (*CBManager)(long nativeObj, const android::Parcel& parcel);
+typedef int (*CBManager)(int sessionId, const android::Parcel& parcel);
class BaseManager
{
@@ -46,16 +46,16 @@ public:
/**
* @brief Send response message to assigend callback method
*
- * @param obj The object of the manager instance.
+ * @param sessionId The unique identification of the session
* @param parcel The parcel object contains event message and parameter
* @return int Returns -1 when it is fail invoke callback function. Returns 1 when it is
* success.
*/
- virtual int sendResponse(long obj, const android::Parcel& parcel);
+ virtual int sendResponse(int sessionId, const android::Parcel& parcel);
protected:
virtual int getState(int sessionId) = 0;
- static std::function<int(long, const android::Parcel&)> mCallback;
+ std::function<int(int, const android::Parcel&)> mCallback;
};
#endif \ No newline at end of file
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextManager.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextManager.cpp
index f4a72969..c8bddcdc 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextManager.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextManager.cpp
@@ -320,8 +320,7 @@ void TextManager::ResponseHandler::processEvent(
parcel.writeInt32(static_cast<int>(paramA));
}
- TextManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(TextManager::getInstance()), parcel);
+ TextManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kTextModifySessionResponse: // fall through
{
@@ -332,8 +331,7 @@ void TextManager::ResponseHandler::processEvent(
if (config != NULL)
{
config->writeToParcel(&parcel);
- TextManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(TextManager::getInstance()), parcel);
+ TextManager::getInstance()->sendResponse(sessionId, parcel);
delete config;
}
}
@@ -342,8 +340,7 @@ void TextManager::ResponseHandler::processEvent(
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(paramA)); // type
parcel.writeInt32(static_cast<int>(paramB)); // duration
- TextManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(TextManager::getInstance()), parcel);
+ TextManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kTextRttReceived:
{
@@ -354,8 +351,7 @@ void TextManager::ResponseHandler::processEvent(
{
String16 rttText(*text);
parcel.writeString16(rttText);
- TextManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(TextManager::getInstance()), parcel);
+ TextManager::getInstance()->sendResponse(sessionId, parcel);
delete text;
}
}
@@ -363,8 +359,7 @@ void TextManager::ResponseHandler::processEvent(
case kTextSessionClosed:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(sessionId));
- TextManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(TextManager::getInstance()), parcel);
+ TextManager::getInstance()->sendResponse(sessionId, parcel);
break;
default:
break;
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoManager.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoManager.cpp
index f48f0c49..297aa89d 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoManager.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoManager.cpp
@@ -377,8 +377,7 @@ void VideoManager::ResponseHandler::processEvent(
parcel.writeInt32(static_cast<int>(paramA));
}
- VideoManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(VideoManager::getInstance()), parcel);
+ VideoManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kVideoModifySessionResponse: // fall through
{
@@ -389,23 +388,20 @@ void VideoManager::ResponseHandler::processEvent(
if (config != NULL)
{
config->writeToParcel(&parcel);
- VideoManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(VideoManager::getInstance()), parcel);
+ VideoManager::getInstance()->sendResponse(sessionId, parcel);
delete config;
}
}
break;
case kVideoFirstMediaPacketInd:
parcel.writeInt32(event);
- VideoManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(VideoManager::getInstance()), parcel);
+ VideoManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kVideoPeerDimensionChanged:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(paramA));
parcel.writeInt32(static_cast<int>(paramB));
- VideoManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(VideoManager::getInstance()), parcel);
+ VideoManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kVideoRtpHeaderExtensionInd:
// TODO : add implementation
@@ -414,26 +410,22 @@ void VideoManager::ResponseHandler::processEvent(
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(paramA)); // type
parcel.writeInt32(static_cast<int>(paramB)); // duration
- VideoManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(VideoManager::getInstance()), parcel);
+ VideoManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kVideoPacketLossInd:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(paramA));
- VideoManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(VideoManager::getInstance()), parcel);
+ VideoManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kVideoDataUsageInd:
parcel.writeInt32(event);
parcel.writeInt64(static_cast<int>(paramA));
- VideoManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(VideoManager::getInstance()), parcel);
+ VideoManager::getInstance()->sendResponse(sessionId, parcel);
break;
case kVideoSessionClosed:
parcel.writeInt32(event);
parcel.writeInt32(static_cast<int>(sessionId));
- VideoManager::getInstance()->sendResponse(
- reinterpret_cast<uint64_t>(VideoManager::getInstance()), parcel);
+ VideoManager::getInstance()->sendResponse(sessionId, parcel);
break;
default:
break;
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/jni/libimsmediajni.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/jni/libimsmediajni.cpp
index 8f20ed78..a80b48f4 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/jni/libimsmediajni.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/jni/libimsmediajni.cpp
@@ -58,10 +58,9 @@ JNIEnv* GetJNIEnv()
return env;
}
-static int SendData2Java(long nNativeObject, const android::Parcel& objParcel)
+static int SendData2Java(int sessionId, const android::Parcel& objParcel)
{
JNIEnv* env;
- jlong jNativeObject = nNativeObject;
if ((gClass_JNIImsMediaService == NULL) || (gMethod_sendData2Java == NULL))
{
@@ -85,7 +84,7 @@ static int SendData2Java(long nNativeObject, const android::Parcel& objParcel)
memcpy(pBuffer, objParcel.data(), objParcel.dataSize());
env->ReleaseByteArrayElements(baData, pBuffer, 0);
env->CallStaticIntMethod(
- gClass_JNIImsMediaService, gMethod_sendData2Java, jNativeObject, baData);
+ gClass_JNIImsMediaService, gMethod_sendData2Java, sessionId, baData);
}
env->DeleteLocalRef(baData);
@@ -223,7 +222,7 @@ jint ImsMediaServiceJni_OnLoad(JavaVM* vm, JNIEnv* env)
}
gMethod_sendData2Java =
- env->GetStaticMethodID(gClass_JNIImsMediaService, "sendData2Java", "(J[B)I");
+ env->GetStaticMethodID(gClass_JNIImsMediaService, "sendData2Java", "(I[B)I");
if (gMethod_sendData2Java == NULL)
{