Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 055db37b authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "AVRCP Controller browsing fails with static JNI interface methods" into...

Merge "AVRCP Controller browsing fails with static JNI interface methods" into main am: 21d0269c am: d5c76dc8

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/2763997



Change-Id: Ib4a76e273c4237dbcce02a31b923fde15cea0e5d
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 48db5cac d5c76dc8
Loading
Loading
Loading
Loading
+19 −10
Original line number Original line Diff line number Diff line
@@ -45,6 +45,7 @@ static jmethodID method_handleNowPlayingContentChanged;
static jmethodID method_onAvailablePlayerChanged;
static jmethodID method_onAvailablePlayerChanged;
static jmethodID method_getRcPsm;
static jmethodID method_getRcPsm;


static jclass class_AvrcpControllerNativeInterface;
static jclass class_AvrcpItem;
static jclass class_AvrcpItem;
static jclass class_AvrcpPlayer;
static jclass class_AvrcpPlayer;


@@ -437,10 +438,11 @@ static void btavrcp_get_folder_items_callback(


        ScopedLocalRef<jobject> mediaObj(
        ScopedLocalRef<jobject> mediaObj(
            sCallbackEnv.get(),
            sCallbackEnv.get(),
            (jobject)sCallbackEnv->CallObjectMethod(
            (jobject)sCallbackEnv->CallStaticObjectMethod(
                sCallbacksObj, method_createFromNativeMediaItem, addr.get(),
                class_AvrcpControllerNativeInterface,
                uid, (jint)item->media.type, mediaName.get(),
                method_createFromNativeMediaItem, addr.get(), uid,
                attrIdArray.get(), attrValArray.get()));
                (jint)item->media.type, mediaName.get(), attrIdArray.get(),
                attrValArray.get()));
        if (!mediaObj.get()) {
        if (!mediaObj.get()) {
          ALOGE("%s failed to create AvrcpItem for type ITEM_MEDIA", __func__);
          ALOGE("%s failed to create AvrcpItem for type ITEM_MEDIA", __func__);
          return;
          return;
@@ -462,9 +464,10 @@ static void btavrcp_get_folder_items_callback(
        long long uid = *(long long*)item->folder.uid;
        long long uid = *(long long*)item->folder.uid;
        ScopedLocalRef<jobject> folderObj(
        ScopedLocalRef<jobject> folderObj(
            sCallbackEnv.get(),
            sCallbackEnv.get(),
            (jobject)sCallbackEnv->CallObjectMethod(
            (jobject)sCallbackEnv->CallStaticObjectMethod(
                sCallbacksObj, method_createFromNativeFolderItem, addr.get(),
                class_AvrcpControllerNativeInterface,
                uid, (jint)item->folder.type, folderName.get(),
                method_createFromNativeFolderItem, addr.get(), uid,
                (jint)item->folder.type, folderName.get(),
                (jint)item->folder.playable));
                (jint)item->folder.playable));
        if (!folderObj.get()) {
        if (!folderObj.get()) {
          ALOGE("%s failed to create AvrcpItem for type ITEM_FOLDER", __func__);
          ALOGE("%s failed to create AvrcpItem for type ITEM_FOLDER", __func__);
@@ -502,9 +505,10 @@ static void btavrcp_get_folder_items_callback(
        }
        }
        ScopedLocalRef<jobject> playerObj(
        ScopedLocalRef<jobject> playerObj(
            sCallbackEnv.get(),
            sCallbackEnv.get(),
            (jobject)sCallbackEnv->CallObjectMethod(
            (jobject)sCallbackEnv->CallStaticObjectMethod(
                sCallbacksObj, method_createFromNativePlayerItem, addr.get(),
                class_AvrcpControllerNativeInterface,
                id, playerName.get(), featureBitArray.get(), playStatus,
                method_createFromNativePlayerItem, addr.get(), id,
                playerName.get(), featureBitArray.get(), playStatus,
                playerType));
                playerType));
        if (!playerObj.get()) {
        if (!playerObj.get()) {
          ALOGE("%s failed to create AvrcpPlayer from ITEM_PLAYER", __func__);
          ALOGE("%s failed to create AvrcpPlayer from ITEM_PLAYER", __func__);
@@ -730,6 +734,11 @@ static void initNative(JNIEnv* env, jobject object) {
      env->FindClass("com/android/bluetooth/avrcpcontroller/AvrcpPlayer");
      env->FindClass("com/android/bluetooth/avrcpcontroller/AvrcpPlayer");
  class_AvrcpPlayer = (jclass)env->NewGlobalRef(tmpBtPlayer);
  class_AvrcpPlayer = (jclass)env->NewGlobalRef(tmpBtPlayer);


  jclass tmpControllerInterface = env->FindClass(
      "com/android/bluetooth/avrcpcontroller/AvrcpControllerNativeInterface");
  class_AvrcpControllerNativeInterface =
      (jclass)env->NewGlobalRef(tmpControllerInterface);

  const bt_interface_t* btInf = getBluetoothInterface();
  const bt_interface_t* btInf = getBluetoothInterface();
  if (btInf == NULL) {
  if (btInf == NULL) {
    ALOGE("Bluetooth module is not loaded");
    ALOGE("Bluetooth module is not loaded");