Fixed deadlock between contacts fetching async task & contacts presence notify

This commit is contained in:
Sylvain Berfini 2020-02-28 13:16:19 +01:00
parent a42d7a47ae
commit 21c3b89652

View file

@ -24,23 +24,23 @@ import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.provider.ContactsContract; import android.provider.ContactsContract;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.R; import org.linphone.R;
import org.linphone.compatibility.Compatibility; import org.linphone.compatibility.Compatibility;
import org.linphone.core.Core; import org.linphone.core.Core;
import org.linphone.core.Friend; import org.linphone.core.Friend;
import org.linphone.core.FriendList; import org.linphone.core.FriendList;
import org.linphone.core.PresenceBasicStatus;
import org.linphone.core.PresenceModel;
import org.linphone.core.tools.Log; import org.linphone.core.tools.Log;
import org.linphone.settings.LinphonePreferences; import org.linphone.settings.LinphonePreferences;
import org.linphone.utils.LinphoneUtils; import org.linphone.utils.LinphoneUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
class AsyncContactsLoader extends AsyncTask<Void, Void, AsyncContactsLoader.AsyncContactsData> { class AsyncContactsLoader extends AsyncTask<Void, Void, AsyncContactsLoader.AsyncContactsData> {
@SuppressLint("InlinedApi") @SuppressLint("InlinedApi")
public static final String[] PROJECTION = { public static final String[] PROJECTION = {
@ -226,7 +226,7 @@ class AsyncContactsLoader extends AsyncTask<Void, Void, AsyncContactsLoader.Asyn
} }
} }
if (contact.getFriend() != null) { /*if (contact.getFriend() != null) {
for (LinphoneNumberOrAddress noa : contact.getNumbersOrAddresses()) { for (LinphoneNumberOrAddress noa : contact.getNumbersOrAddresses()) {
PresenceModel pm = PresenceModel pm =
contact.getFriend().getPresenceModelForUriOrTel(noa.getValue()); contact.getFriend().getPresenceModelForUriOrTel(noa.getValue());
@ -235,7 +235,7 @@ class AsyncContactsLoader extends AsyncTask<Void, Void, AsyncContactsLoader.Asyn
break; break;
} }
} }
} }*/
if (!mContext.getResources().getBoolean(R.bool.hide_sip_contacts_without_presence)) { if (!mContext.getResources().getBoolean(R.bool.hide_sip_contacts_without_presence)) {
if (contact.hasAddress() && !data.sipContacts.contains(contact)) { if (contact.hasAddress() && !data.sipContacts.contains(contact)) {