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

Commit 5f7c092e authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Bluetooth-OPP: Read share count from OPP manager before transfer starts"

parents bb5835ad d595be9b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ public class BluetoothOppManager {

    public boolean mMultipleFlag;

    private int mfileNumInBatch;
    private int mfileNumInBatch = 1;

    private int mInsertShareThreadNum = 0;

+14 −7
Original line number Diff line number Diff line
@@ -109,10 +109,11 @@ class BluetoothOppNotification {

    private static final int NOTIFICATION_ID_INBOUND = -1000006;

    private boolean mPendingUpdate = true;
    private boolean mOutboundUpdateCompleteNotification = true;
    private boolean mInboundUpdateCompleteNotification = true;

    private int confirmation = 0;
    private int mConfirmation = 0;
    private int mInboundActiveNotificationId = 0;
    private int mOutboundActiveNotificationId = 0;
    private int mRunning = 0;
@@ -158,7 +159,9 @@ class BluetoothOppNotification {
     * Update the notification ui.
     */
    public void updateNotification() {
        if (V) Log.v(TAG, "Updating the notification");
        synchronized (BluetoothOppNotification.this) {
            mPendingUpdate = true;
            if (mUpdateNotificationThread == null) {
                if (V) Log.v(TAG, "new notify thread!!!");
                mUpdateNotificationThread = new NotificationUpdateThread();
@@ -203,6 +206,7 @@ class BluetoothOppNotification {
                        throw new IllegalStateException(
                                "multiple UpdateThreads in BluetoothOppNotification");
                    }
                mPendingUpdate = false;
                }

                updateActiveNotification();
@@ -210,7 +214,7 @@ class BluetoothOppNotification {
                updateIncomingFileConfirmNotification();

                try {
                    if ((confirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)
                    if ((mConfirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)
                            || mPowerManager.isScreenOn()) {
                        Thread.sleep(BluetoothShare.UI_UPDATE_INTERVAL);
                    }
@@ -219,9 +223,12 @@ class BluetoothOppNotification {
                    return;
                }

                if (V) Log.v(TAG, "Running = " + mRunning);
            } while ((mRunning > 0) && (mPowerManager.isScreenOn()
                    || (confirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)));
                if (V) {
                    Log.v(TAG, "Running = " + mRunning + " Pending notification is "
                        + mPendingUpdate);
                }
            } while ((mPendingUpdate || (mRunning > 0)) && (mPowerManager.isScreenOn()
                    || (mConfirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)));

            synchronized (BluetoothOppNotification.this) {
                mUpdateNotificationThread = null;
@@ -314,7 +321,7 @@ class BluetoothOppNotification {
                int id = cursor.getInt(idIndex);
                long total = cursor.getLong(totalBytesIndex);
                long current = cursor.getLong(currentBytesIndex);
                confirmation = cursor.getInt(confirmIndex);
                mConfirmation = cursor.getInt(confirmIndex);

                String destination = cursor.getString(destinationIndex);
                String fileName = cursor.getString(dataIndex);
@@ -347,7 +354,7 @@ class BluetoothOppNotification {
                    item.totalCurrent = current;
                    item.totalTotal = total;
                    item.handoverInitiated =
                        confirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED;
                        mConfirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED;
                    item.destination = destination;
                    mNotifications.put(batchID, item);

+9 −3
Original line number Diff line number Diff line
@@ -96,6 +96,8 @@ public class BluetoothOppService extends Service {
    /** Class to handle Notification Manager updates */
    private BluetoothOppNotification mNotifier;

    private boolean mPendingUpdate = true;

    private UpdateThread mUpdateThread;

    private ArrayList<BluetoothOppShareInfo> mShares;
@@ -448,7 +450,9 @@ public class BluetoothOppService extends Service {
    };

    private void updateFromProvider() {
        if (V) Log.v(TAG, "Updating the provider");
        synchronized (BluetoothOppService.this) {
            mPendingUpdate = true;
            if ((mUpdateThread == null) && (mAdapter != null)
                && mAdapter.isEnabled()) {
                if (V) Log.v(TAG, "Starting a new thread");
@@ -477,6 +481,7 @@ public class BluetoothOppService extends Service {
                    }
                    if (V) Log.v(TAG, "keepUpdateThread is " + keepService + " sListenStarted is "
                            + mListenStarted);
                    mPendingUpdate = false;
                }
                Cursor cursor;
                try {
@@ -627,15 +632,16 @@ public class BluetoothOppService extends Service {
                }

                try {
                    if (((mServerSession != null) || (mTransfer != null))
                            && mPowerManager.isScreenOn()) {
                    if (mPowerManager.isScreenOn()) {
                        Thread.sleep(BluetoothShare.UI_UPDATE_INTERVAL);
                    }
                } catch (InterruptedException e) {
                    if (V) Log.v(TAG, "OppService Thread sleep is interrupted (1), exiting");
                    return;
                }
            } while (mPowerManager.isScreenOn() && ((mServerSession != null) || (mTransfer != null)));

                if(V) Log.v(TAG, "PendingUpdate is " + mPendingUpdate);
            } while (mPendingUpdate);

            synchronized (BluetoothOppService.this) {
                mUpdateThread = null;
+6 −1
Original line number Diff line number Diff line
@@ -475,6 +475,7 @@ public class BluetoothOppTransfer implements BluetoothOppBatch.BluetoothOppBatch
    private void startObexSession() {

        mBatch.mStatus = Constants.BATCH_STATUS_RUNNING;
        BluetoothOppManager mOppManager = BluetoothOppManager.getInstance(mContext);

        mCurrentShare = mBatch.getPendingShare();
        if (mCurrentShare == null) {
@@ -507,7 +508,11 @@ public class BluetoothOppTransfer implements BluetoothOppBatch.BluetoothOppBatch
        }

        if (mSession != null) {
            mSession.start(mSessionHandler, mBatch.getNumShares());
            /* Read the number of files are sharing from OPP Manager instead of getting
             * the number of files from Batch before OBEX session start.
             */
            if (V) Log.v(TAG, "Sharing files = " + mOppManager.getBatchSize());
            mSession.start(mSessionHandler, mOppManager.getBatchSize());
            processCurrentShare();
        }