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

Commit d5c76dc8 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 main am: 21d0269c

parents efc6ccb4 21d0269c
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");