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

Commit c7f8b6fc authored by Joe Onorato's avatar Joe Onorato
Browse files

Managed dialogs should run on the same thread as their activity.

Bug: 3418998
Change-Id: I9b1cf73f9d6f8a5594f405546fcaa3cfd6f03c45
parent 8444023f
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ public class UsbStorageActivity extends Activity
    private static final int DLG_CONFIRM_KILL_STORAGE_USERS = 1;
    private static final int DLG_ERROR_SHARING = 2;
    static final boolean localLOGV = false;
    private boolean mDestroyed;

    // UI thread
    private Handler mUIHandler;
@@ -136,6 +137,12 @@ public class UsbStorageActivity extends Activity
        mProgressBar = (ProgressBar) findViewById(com.android.internal.R.id.progress);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mDestroyed = true;
    }

    private void switchDisplay(final boolean usbStorageInUse) {
        mUIHandler.post(new Runnable() {
            @Override
@@ -232,10 +239,17 @@ public class UsbStorageActivity extends Activity
        return null;
    }

    private void showDialogInner(int id) {
    private void scheduleShowDialog(final int id) {
        mUIHandler.post(new Runnable() {
            @Override
            public void run() {
                if (!mDestroyed) {
                    removeDialog(id);
                    showDialog(id);
                }
            }
        });
    }

    private void switchUsbMassStorage(final boolean on) {
        // things to do on the UI thread
@@ -276,7 +290,7 @@ public class UsbStorageActivity extends Activity
        IMountService ims = getMountService();
        if (ims == null) {
            // Display error dialog
            showDialogInner(DLG_ERROR_SHARING);
            scheduleShowDialog(DLG_ERROR_SHARING);
        }
        String extStoragePath = Environment.getExternalStorageDirectory().toString();
        boolean showDialog = false;
@@ -294,11 +308,11 @@ public class UsbStorageActivity extends Activity
            }
        } catch (RemoteException e) {
            // Display error dialog
            showDialogInner(DLG_ERROR_SHARING);
            scheduleShowDialog(DLG_ERROR_SHARING);
        }
        if (showDialog) {
            // Display dialog to user
            showDialogInner(DLG_CONFIRM_KILL_STORAGE_USERS);
            scheduleShowDialog(DLG_CONFIRM_KILL_STORAGE_USERS);
        } else {
            if (localLOGV) Log.i(TAG, "Enabling UMS");
            switchUsbMassStorage(true);